【问题标题】:Finding intersection of two arrays in Node.js [duplicate]在Node.js中查找两个数组的交集[重复]
【发布时间】:2012-05-12 13:28:22
【问题描述】:

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

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

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

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

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

有更好的方法吗?

【问题讨论】:

  • 这几天我已经两次看到这个问题了,有CS班把这个作为作业分发吗?

标签: javascript node.js mongodb


【解决方案1】:

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

_(a).intersection(b)

_.intersection(a, b)

【讨论】:

    【解决方案2】:

    方法如下

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

    【讨论】:

    • 这就是我想要的。谢谢!
    • 要获得更快的版本,请确保在较短的数组上运行 for 循环。
    猜你喜欢
    • 2015-12-23
    • 1970-01-01
    • 2015-07-26
    • 1970-01-01
    • 1970-01-01
    • 2017-01-04
    • 2013-04-20
    • 1970-01-01
    • 2021-11-14
    相关资源
    最近更新 更多