gpt4 book ai didi

javascript - 如何查找array2中不在array1中的元素?

转载 作者:行者123 更新时间:2023-11-28 21:05:16 25 4
gpt4 key购买 nike

我有两个数组:

var a1 = [ { ID: 2, N:0 }, { ID: 1, N:0 } ];
var a2 = [ { ID: 1, N:0 }, { ID: 2, N:0 }, { ID: 3, N:0 } ];

我需要获取 a2 上但不在 a1 中的所有元素。这里的元素仅通过属性 ID 与另一个元素区分开来,其他属性应被忽略。而且我无法保证数组中元素的顺序。这意味着此示例的结果应该是:

var result = [ { ID: 3, N:0 } ]; // result for the example above

我怎样才能有效地做到这一点? (我将比较长度为 500 到 5,000 的数组)

最佳答案

为了有效地做到这一点,您需要为 a1 中已有的项目构建一个索引,以便您可以循环遍历 a2 并将每个项目与索引进行比较,看看它是否已经被看到。可以使用 javascript 对象作为索引。循环遍历a1并将其所有ID放入索引中。然后循环遍历a2并收集ID未出现在索引中的所有项目。

function findUniques(testItems, baseItems) {
var index = {}, i;
var result = [];

// put baseItems id values into the index
for (i = 0; i < baseItems.length; i++) {
index[baseItems[i].ID] = true;
}

// now go through the testItems and collect the items in it
// that are not in the index
for (i = 0; i < testItems.length; i++) {
if (!(testItems[i].ID in index)) {
result.push(testItems[i]);
}
}
return(result);
}

var a1 = [ { ID: 2, N:0 }, { ID: 1, N:0 } ];
var a2 = [ { ID: 1, N:0 }, { ID: 2, N:0 }, { ID: 3, N:0 } ];

var result = findUniques(a2, a1);
// [{"ID":3,"N":0}]

工作演示:http://jsfiddle.net/jfriend00/uDEtg/

关于javascript - 如何查找array2中不在array1中的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10048766/

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