4

可能重复:
JavaScript 中数组交集的最简单代码

我正在用 Mongodb 和 Nodejs 编写一个应用程序。我有一个“学生”集合,其中包含一个数组,其中包含特定学生学习的所有课程(课程 ID,指的是“课程”集合中的文档)的列表。

我有 2 个学生,StudentA 和 StudentB。我想看看这两个学生是否上过任何共同的课程。

我已经从 Mongodb 中检索了 studentA 和 studentB 文档。我想在 Node.js 应用程序中找到这两个数组之间的交集。

我想到的一种方法是遍历第一个数组,创建一个以 objectid 为键的哈希映射。然后遍历第二个数组并尝试将值增加 1。最后,所有值为 1 的条目都是相交元素。

有更好的方法吗?

4

2 回答 2

14

Underscore.js可以计算n 个数组的交集。因此:

_(a).intersection(b)

或者

_.intersection(a, b)
于 2012-05-03T03:15:35.313 回答
9

就是这样

a=[1,2,3,4];
b=[3,4,5];
c=[];
j=0;
for (var i=0; i < a.length; ++i)
    if (b.indexOf(a[i]) != -1)
        c[j++] = a[i];

c将包含此末尾的交叉点。

于 2012-05-03T03:02:30.067 回答