我正在创建一个函数,该函数接受第一个参数,即对象数组,并将其与第二个参数(一个对象)进行比较,以查看键/值对是否匹配。该函数将返回包含匹配键/值对的对象。我在按键上同时使用filter
和hasOwnProperty
进行比较,例如:
function whatIsInAName(collection, source) {
var result = collection.filter(el => {
return el == Object.keys(el).hasOwnProperty(Object.keys(source)) === true;
});
}
return result;
whatIsInAName([{ first: "Romeo", last: "Montague" }, { first: "Mercutio",
last: null }, { first: "Tybalt", last: "Capulet" }], { last: "Capulet" });
在上面的示例中,该函数将返回{ first: "Tybalt", last: "Capulet" }
我正在过滤第一个参数,并将键与第二个参数进行比较,试图返回两个对象的键进行比较,但是我对此非常困惑。也就是说,如果这是解决方案的要求,我将如何比较除键之外的值?我确实知道还有其他方法可以得到答案,但是我想了解hasOwnProperty
以及我的逻辑哪里出问题了。谢谢。
答案 0 :(得分:1)
相反,遍历entries
中每个el
的{{1}},这样您就可以一次针对每个键和相关值进行测试。 collection
检查是完全多余的:
hasOwnProperty