如何在JavaScript中计算多个数组的交集?而[equals: function]是什么意思?

10 浏览
0 Comments

如何在JavaScript中计算多个数组的交集?而[equals: function]是什么意思?

我知道这个问题,最简单的数组交集代码,但是所有的解决方案都假设数组的数量为两个,在我的情况下无法确定。

我在页面上有包含数组的div。我想要找出所有数组中的共同值。我不知道我会提前拥有多少个div/数组。计算所有数组中的共同值的最佳方法是什么?

var array1 = ["Lorem", "ipsum", "dolor"];
var array2 = ["Lorem", "ipsum", "quick", "brown", "foo"];
var array3 = ["Jumps", "Over", "Lazy", "Lorem"];
var array4 = [1337, 420, 666, "Lorem"];
//结果应该是["Lorem"];

我在其他地方找到了另一个解决方案,使用了Underscore.js。

var arrayOfArrays = [[4234, 2323, 43], [1323, 43, 1313], [23, 34, 43]];
_.intersection.apply(_, arrayOfArrays)
//结果是[43]

我已经在我的本地使用简单的虚拟数据进行了测试,似乎可以工作。但是由于某种原因,我生成的一些包含简单字符串的数组也会自动包含一个附加值"equals: function":

["Dummy1", "Dummy2", "Dummy3", equals: function]

每当我使用Underscore.js的intersection方法在一个数组的数组上时,我总是在开发工具中得到[equals: function],而不是-如果"Dummy3"是所有数组的公共值,则是["Dummy3"]。

所以简而言之,有没有另一种适合我的情况的数组交集解决方案?有人能解释一下这里的[equals: function]是什么意思吗?当我展开开发工具中的这个项时,它会产生一个空数组和一个数组可用的方法列表(pop、push、shift等),但这些方法都是淡化的,而equals: function则是高亮的。

0