gpt4 book ai didi

javascript - 比较具有特定ID的javascript中的两个数组

转载 作者:行者123 更新时间:2023-11-30 11:23:56 25 4
gpt4 key购买 nike

我正在寻找一种更简洁、更高效的 javascript 解决方案来比较两个数组并创建第三个数组。

所以我有两个数组:

var array1 = [
[{
id: 1,
enabled: false

}],
[{
id: 2,
enabled: true,
}],
[{
id: 10,
enabled: false
}]
]

var array2 = [
{
id_from_array1: 10,
data: true
},
{
id_from_array1: 20,
data: false
},
{
id_from_array1: 1,
data: true
}
]

我想从第二个数组中提取第一个数组中不存在的 ID,所以现在我的解决方案是创建一个带有双循环的第三个数组来比较前两个数组的值:

var array3 = [];

for (var i = 0; i < array2.length; i++) {
for (var y = 0; y < array1.length; y++) {
if (array2[i].id_from_array1 === array1[y][0].id) {
array3.push(array2[i])
}
}
}

the fiddle

我们可以做得更好吗?

谢谢!

最佳答案

从array1创建一个id数组,然后根据之前的id数组.filter数组2;

var ids = array1.map( el => el[0].id );
ids = Array.from(new Set(ids)); // Get unique ids as set are always unique
var array3 = array2.filter( el => ids.indexOf(el.id_from_array1)!==-1);
console.log(array3);

var array1 = [
[{
id: 1,
enabled: false

}],
[{
id: 2,
enabled: true,
}],
[{
id: 10,
enabled: false
}]
]

var array2 = [
{
id_from_array1: 10,
data: true
},
{
id_from_array1: 20,
data: false
},
{
id_from_array1: 1,
data: true
}
];

var ids = array1.map( el => el[0].id );
var array3 = array2.filter( el => ids.indexOf(el.id_from_array1)!==-1);
console.log(array3);

关于javascript - 比较具有特定ID的javascript中的两个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48745032/

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