javascript - 如何找到与两个数组相交的所有对象?

标签 javascript arrays

如果我有两个对象数组,如下所示:

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 javascriptObject 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/

相关文章:

javascript - Mootools JSON(拉 child ,或 child )

C# 反射 : getting the values of an array

php - 对具有不确定数据的数组进行排序

PHP 将 MySQL 行检索到数组中

javascript - 如果选中复选框,则需要输入

javascript - 如何使具有许多细微差别的 if-s 的代码更短?

java - ArrayIndexOutOfBoundsException 当我通过数组长度修改索引时

c - 即使我在 C 编程中正确输入代码,if 条件也会出错

javascript - 如何在我的案例中显示重复元素

javascript - AJAX 表单和 Rails 在 js 模板上呈现?