在node.js中查找2个数组的交集

时间:2012-05-03 02:53:36

标签: javascript node.js mongodb

  

可能重复:
  Simplest code for array intersection in javascript

我正在使用mongodb和nodejs编写应用程序。我有一个'学生'集合,其中包含一个列表,其中包含所有课程的列表(课程ID,指的是'课程'集合中的文档),特定学生已经学习。

我有2名学生,StudentA和StudentB。我想看看这两名学生是否参加了任何共同课程。

我已经从mongodb检索了studentA和studentB文件。我想在node.js app。

中找到这两个数组之间的交集

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

有更好的方法吗?

请告诉我。

-sU

2 个答案:

答案 0 :(得分:14)

Underscore.js可以计算the intersection of n arrays。因此:

_(a).intersection(b)

_.intersection(a, b)

答案 1 :(得分:7)

以下是

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将包含此末尾的交集。