gpt4 book ai didi

javascript - 比较两个不同长度的数组并排除匹配项

转载 作者:行者123 更新时间:2023-11-30 16:03:05 26 4
gpt4 key购买 nike

我有两个 JSON 数组:

{"Array1":[ 
{ "_id": "1234"},
{ "_id": "5678"},
{ "_id": "3456"} ]}

{"Array2":[ 
{ "_id": "1234"},
{ "_id": "5678"} ]}

我如何在 node.js 中比较两者并只返回与 Array1 的差异?

我尝试了以下操作:

if (Array1.every(function (u, i) { return u._id === Array2[i]._id;})) {
Array1.splice(i, 1);
}

最佳答案

我不会使用 Array.prototype.every 来过滤掉相同的 _id,因为这不是它的预期功能。

相反,我建议您使用 Array.prototype.filter 方法以及 Array.prototype.map,如下所示:

const obj1 = {"Array1":[ 
{ "_id": "1234"},
{ "_id": "5678"},
{ "_id": "3456"} ]};

const obj2 = {"Array2":[
{ "_id": "1234"},
{ "_id": "5678"} ]};


console.log(obj1.Array1.filter(a1 => obj2.Array2.map(a2 => a2._id).indexOf(a1._id) < 0));

ES5:

var obj1 = {"Array1":[ 
{ "_id": "1234"},
{ "_id": "5678"},
{ "_id": "3456"} ]};

var obj2 = {"Array2":[
{ "_id": "1234"},
{ "_id": "5678"} ]};


console.log(obj1.Array1.filter(function (a1) {
return obj2.Array2.map(function (a2) {
return a2._id;
}).indexOf(a1._id) < 0;
}));

关于javascript - 比较两个不同长度的数组并排除匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37408173/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com