比较两个不同长度的数组并排除匹配
我有两个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
s,因为这不是它的预期function。
相反,我build议你使用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));