我知道这个问题,最简单的数组交集代码,但所有的解决方案都假设数组的数量是两个,这在我的情况下是不确定的。
我在包含数组的数据的页面上有 div。我想找到所有数组共有的值。我不知道我会提前有多少个 div/arrays。计算所有数组共有的值的最佳方法是什么?
var array1 = ["Lorem", "ipsum", "dolor"];
var array2 = ["Lorem", "ipsum", "quick", "brown", "foo"];
var array3 = ["Jumps", "Over", "Lazy", "Lorem"];
var array4 = [1337, 420, 666, "Lorem"];
//Result should be ["Lorem"];
我在别处找到了另一个解决方案,使用 Underscore.js。
var arrayOfArrays = [[4234, 2323, 43], [1323, 43, 1313], [23, 34, 43]];
_.intersection.apply(_, arrayOfArrays)
//Result is [43]
我最后用简单的虚拟数据对此进行了测试,它似乎有效。但出于某种原因,我正在生成的一些包含简单字符串的数组也会自动包含一个附加值,“equals: function”:
["Dummy1", "Dummy2", "Dummy3", equals: function]
每当我使用 Underscore.js 交集方法时,在数组数组上,我总是在开发工具中得到 [equals: function],而不是 - 如果“Dummy3”对所有数组都是通用的 - [“Dummy3”]。
所以 TL;DR 是否有另一种适合我的情况的阵列交集解决方案?谁能解释一下 [equals: function] 在这里的含义?当我在开发工具中展开项目时,它会生成一个空数组和数组上可用的方法列表(pop、push、shift 等),但这些方法都淡出,而 equals: function 突出显示。