首页 > 解决方案 > 在多个数组中查找交集

问题描述

我正在尝试在多个数组中查找相交值,这些数组位于一个对象中,如下所示:

object = {
  filterA: ["1","2","3","4"],
  filterB: ["2","5","6","7"],
  filterN: ["2","4","7"]
}

该对象可以包含多个数组,并且键的名称可以不同。在所描述的对象中,我只需要返回“2”。

我试图建立在这个答案的基础上:Multiple array intersection in javascript但我无法弄清楚,因为它使用静态变量(a,b,c)作为示例。如果有办法用 lodash 做到这一点,我们将不胜感激,但 ES 5 中的 vanilla javascript 也可以!

标签: javascriptarrayslodashintersection

解决方案


您可以获取值并Set使用Set#has.

var object = { filterA: ["1", "2", "3", "4"], filterB: ["2", "5", "6", "7"], filterN: ["2", "4", "7"] },
    result = Object
        .values(object)
        .reduce((a, b) => b.filter(Set.prototype.has, new Set(a)));

console.log(result);


推荐阅读