如果我有两个对象数组,如下所示:
var a1 = [{"a":"b"}, {"b":"c"}, {"d":"e"}],
a2 = [{"g":"h"}, {"a":"b"}, {"i":"j"}]
(注意对象可以是任何结构,不是那么简单)
提取两个数组中的所有对象的最有效方法是什么?
我检查了这个问题:Finding matches between multiple JavaScript Arrays ,但这不一样......
最佳答案
extract all the objects that are in both arrays?
基本上你只需要组合 Simplest code for array intersection in javascript与 Object comparison in JavaScript (而不是使用恒等 ==
运算符):
var intersection = a1.filter(function(a) {
return a2.some(function(b) {
return Object.equals(a, b);
});
});
使用最适合您要求的任何Object.equals
函数。
what is the most efficient way?
这取决于你的对象。如果您可以在它们上定义一个合理的比较函数,以便可以对数组进行排序,或者如果您甚至可以想出一个一致的哈希函数,那么还有比上述更快的方法。检查链接问题中的答案。
关于javascript - 如何找到与两个数组相交的所有对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46770250/