function compare (arr1, arr2){
//if object key value pair from arr2 exists in arr1 return modified array
for (let obj of arr2) {
if(obj.key === arr1.key){
return obj
}
}
}
// Should return [{key: 1, name : "Bob", {key: 2, name : "Bill"}]
compare([{key: 1}, {key: 2}],
[{key: 1, name : "Bob"}, {key: 3, name : "Joe"}, {key: 2, name : "Bill"}])
我与具有不同长度和属性的循环对象数组断开连接。我尝试过循环和IndexOf,但由于长度不同,我无法比较这两种数组。我觉得过滤器可能是一个很好的工具,但没有运气。有什么想法吗?
答案 0 :(得分:1)
从第一个数组(键)创建Set个属性,然后使用set创建Array#filter第二个数组(值):
function compareBy(prop, keys, values) {
const propsSet = new Set(keys.map((o) => o[prop]));
return values.filter((o) => propsSet.has(o[prop]));
}
const result = compareBy('key', [{key: 1}, {key: 2}],
[{key: 1, name : "Bob"}, {key: 3, name : "Joe"}, {key: 2, name : "Bill"}])
console.log(result);