【发布时间】:2020-04-29 13:00:23
【问题描述】:
问题
创建一个函数,查看对象数组(第一个参数)并返回一个包含匹配名称和值对的所有对象的数组(第二个参数)。如果要包含在返回的数组中,源对象的每个名称和值对都必须存在于集合中的对象中。
例如,如果第一个参数是 [{ first: "Romeo", last: "Montague" }, { first: "Mercutio", last: null }, { first: "Tybalt", last: "Capulet" }],第二个参数是 { last: "Capulet" },那么您必须从数组中返回第三个对象(第一个参数),因为它包含名称及其值,它作为第二个参数传递。
我的尝试
function whatIsInAName(collection, source) {
let filteredCollection = collection.filter((item)=>{
return collection[item].indexOf((source[item])> 0);
})
return filteredCollection;
}
whatIsInAName([{ first: "Romeo", last: "Montague" }, { first: "Tybalt", last: "Capulet" }], { last: "Capulet" });
我的问题
我真的很难同时遍历对象并找到相关的键和值。似乎某些函数不像对数组那样对对象起作用。
非常感谢您在解决此代码问题方面的帮助?
【问题讨论】:
-
Object.entries(obj)为您提供 obj 的键/值对数组。 -
indexOf周围的括号也弄乱了,这条线不会像你想象的那样做。 -
你如何变回一个对象?
-
@AndrewNeedsHelp 您实际上不需要改回对象。你仍然只需要
filtercollection,那部分代码是对的。但是接下来,你需要loop throughsource查看它的所有属性是否都在当前item中 -
所以只是括号有问题吗?如果是这样,它们应该如何? @Bergi
标签: javascript algorithm object