我正在寻找一种算法来获取一个数组中不在另一个数组中的所有对象。所以给定这些数组:
let snap = [
{
"text": "pack bags",
"Id": 0,
"datetime": "16/10/2020 @ 21:26:2"
}
];
let data = [
{
"text": "pack bags",
"Id": 0,
"datetime": "16/10/2020 @ 21:26:2"
},
{
"text": "booking tickets",
"Id": 1,
"datetime": "1/11/2020 @ 22:18:17"
}
];
我想最终得到这个数组:
updateData = [
{
"text": "booking tickets",
"Id": 1,
"datetime": "1/11/2020 @ 22:18:17"
}
]
最佳答案
您可以使用Map对象在过滤项目时访问项目时具有O(1)
:
const maps = new Map(snap.map(s => [s.Id, s]));
const result = data.filter(f => !maps.get(f.Id))
一个例子:
let snap = [
{
"text": "pack bags",
"Id": 0,
"datetime": "16/10/2020 @ 21:26:2"
}
];
let data = [
{
"text": "pack bags",
"Id": 0,
"datetime": "16/10/2020 @ 21:26:2"
},
{
"text": "booking tickets",
"Id": 1,
"datetime": "1/11/2020 @ 22:18:17"
}
];
const maps = new Map(snap.map(s => [s.Id, s]));
const result = data.filter(f => !maps.get(f.Id))
console.log(result)
关于javascript - 如何在Javascript中获取不包含在另一个数组中的数组项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64635742/