因此,我在freecodecamp上遇到了一些问题,我被困在一个说: “使一个函数看起来通过一个对象数组(第一个参数)并返回一个包含所有对象的数组具有匹配的属性和值对(第二个参数)“。所以,我看着的答案,来到翻过下一代码:了解函数的返回值
function whatIsInAName(collection, source) {
var arr = [];
var keys = Object.keys(source);
// Filter array and remove the ones that do not have the keys from source.
arr = collection.filter(function(obj) {
return keys.every(function(key) {
return obj.hasOwnProperty(key) && obj[key] === source[key];
});
});
return arr;
}
才明白什么做什么,我不能似乎得到的是collection.filter内的回报,为什么我们需要这两个:
return keys.every(function(key) {
return obj.hasOwnProperty(key) && obj[key] === source[key];
为什么代码不能只用第二个。
有人可以向我解释这一点。
它可以工作,没有'hasOwnProperty',但如果对象的祖先有属性,这些也将被考虑给孩子。 –
因为您需要使用'return'从函数返回一个值。第一个返回从传递给'every'的函数返回。第二个回报是从'whatIsInAName'返回的。 – Carcigenicate
阅读https://developer.mozilla.org/nl/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty,了解关于该方法的更多详细信息。 –