我有两个对象数组:
first = [
{ "id": "15", "name": "raza" },
{ "id": "1", "name": "sahir" },
{ "id": "54", "name": "ayyan" },
{ "id": "3", "name": "tahir" },
];
second = [
{ "id": "15", "name": "razi" },
{ "id": "3", "name": "qasim" },
{ "id": "1", "name": "taha" },
];
我想根据其ID从“第一个”数组中获取不匹配的对象,例如
const result = this.first.filter(e => this.second.some(({id}) => e.id ==id ));
它给了我匹配的对象,但我想获得不匹配的对象。
答案 0 :(得分:3)
像这样吗?
first = [
{ "id": "15", "name": "raza" },
{ "id": "1", "name": "sahir" },
{ "id": "54", "name": "ayyan" },
{ "id": "3", "name": "tahir" },
];
second = [
{ "id": "15", "name": "razi" },
{ "id": "3", "name": "qasim" },
{ "id": "1", "name": "taha" },
];
unmatched = first.filter(item => !second.some(_item => _item.id === item.id));
console.log(unmatched);
答案 1 :(得分:0)
这是 O(n + m)时间复杂度解决方案(n,m是数组长度):
background-image
let h={}; second.map(x=>h[x.id]=1); // we use hash map with "second" ids
let result = first.filter(x=>!h[x.id]);