相关疑难解决方法(0)

javascript中数组交集的最简单代码

在javascript中实现数组交叉的最简单,无库的代码是什么?我想写

intersection([1,2,3], [2,3,4,5])
Run Code Online (Sandbox Code Playgroud)

得到

[2, 3]
Run Code Online (Sandbox Code Playgroud)

javascript intersection data-structures

529
推荐指数
16
解决办法
33万
查看次数

查找多个JavaScript数组之间的匹配项

我有多个带有字符串值的数组,我想比较它们,只保留所有数组之间相同的匹配结果.

鉴于此示例代码:

var arr1 = ['apple', 'orange', 'banana', 'pear', 'fish', 'pancake', 'taco', 'pizza'];
var arr2 = ['taco', 'fish', 'apple', 'pizza'];
var arr3 = ['banana', 'pizza', 'fish', 'apple'];
Run Code Online (Sandbox Code Playgroud)

我想生成以下包含所有给定数组的匹配的数组:

['apple', 'fish', 'pizza']
Run Code Online (Sandbox Code Playgroud)

我知道我可以将所有数组组合在一起,var newArr = arr1.concat(arr2, arr3);但只需给我一个包含所有数组的数组,再加上重复数组.这可以轻松完成,而不需要像underscore.js这样的库的开销吗?

(太好了,现在我也饿了!)

编辑我想我应该提到可能有一个未知数量的数组,我只是以3为例.

javascript arrays jquery

54
推荐指数
3
解决办法
4万
查看次数

包含对象的两个数组的差异和交集

我有两个数组list1,list2其中包含具有某些属性的对象; userId是Id还是唯一属性:

list1 = [
    { userId: 1234, userName: 'XYZ'  }, 
    { userId: 1235, userName: 'ABC'  }, 
    { userId: 1236, userName: 'IJKL' },
    { userId: 1237, userName: 'WXYZ' }, 
    { userId: 1238, userName: 'LMNO' }
]

list2 = [
    { userId: 1235, userName: 'ABC'  },  
    { userId: 1236, userName: 'IJKL' },
    { userId: 1252, userName: 'AAAA' }
]
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种简单的方法来执行以下三个操作:

  1. list1 operation list2 应该返回元素的交集:

    [
        { userId: 1235, userName: 'ABC'  },
        { userId: 1236, userName: 'IJKL' …
    Run Code Online (Sandbox Code Playgroud)

javascript arrays set-difference set-operations set-intersection

16
推荐指数
4
解决办法
2万
查看次数