Pio*_*zak 1 javascript arrays filter javascript-objects data-structures
是否有可能以某种方式过滤让我们说这样一个对象数组数组:
[[{id: 1}, {id: 2}, {id: 3}], [{id:6}, {id: 2}], [{id: 2}, {id: 1}, {id: 9}, {id: 3}]]
Run Code Online (Sandbox Code Playgroud)
要获取所有数组具有相同属性(id)的对象数组,因此在这种情况下,它的输出将是:
[{id: 2}] // becasue this id is the same in all three subarrays
Run Code Online (Sandbox Code Playgroud)
我只尝试过来自 loadash 的intersectionBy,但它似乎以完全不同的方式工作:/
我会取一个数组(取一个就足够了,因为如果属性不存在,它就已经不常见了),在这个例子中我取第一个,但可能更有效的是选择最短的一个。
迭代数组并检查每个对象是否与所有其他数组相同。
const arr = [[{id: 1}, {id: 2}, {id: 3}], [{id:6}, {id: 2}], [{id: 2}, {id: 1}, {id: 9}, {id: 3}]];
let firstArray = arr.shift();
const result = firstArray.reduce((common, item)=>{
if (arr.every(inner => inner.some(_item => _item.id === item.id))) {
common.push(item);
}
return common;
},[])
console.log(result);Run Code Online (Sandbox Code Playgroud)