让我们说:
var array1 = [{ id: 1 }, { id: 4}, { id: 3 }]
var array2 = [{ id: 1 }, { id: 2}]
我知道你可以像这样连接两个数组(没有重复):
Array.from(new Set(array1.concat(array2)))
现在,如何使用 创建一个共享相同值的对象的新数组?
var array2 = [{ id: 1 }]
答案 0 :(得分:2)
您可以使用.filter()
和.some()
来提取匹配元素:
let array1 = [{ id: 1 }, { id: 4}, { id: 3 }]
let array2 = [{ id: 1 }, { id: 2}]
let result = array1.filter(({id}) => array2.some(o => o.id === id));
console.log(result);
有用的资源:
答案 1 :(得分:1)
您可以使用id
对象设置一个集并过滤array2
var array1 = [{ id: 1 }, { id: 4}, { id: 3 }] ,
array2 = [{ id: 1 }, { id: 2}],
s = new Set(array1.map(({ id }) => id)),
common = array2.filter(({ id }) => s.has(id));
console.log(common);
请求相同对象的相同性。
var array1 = [{ id: 1 }, { id: 4}, { id: 3 }] ,
array2 = [array1[0], { id: 2}],
s = new Set(array1),
common = array2.filter(o => s.has(o));
console.log(common);
答案 2 :(得分:1)
根据您的定义,假设对象即使具有相同的结构,也不是真正相同的对象,我定义了一个“相等函数”,然后使用filter
和{{1} }:
some