如何使用Underscore.js对数组数组执行联合或交集

Nan*_*ali 34 javascript underscore.js lodash

我有一个数组数组:

var selected = [[1, 4, 5, 6], [1, 2, 3, 5, 7], [1, 4, 5, 6], [1, 7]];
Run Code Online (Sandbox Code Playgroud)

Underscore.js具有方便的并集和交集方法,但它们可以将每个数组作为参数单独传递.

如果要执行设置操作的数组的数量是任意的,我该如何处理呢?

这个问题解决了类似的问题,但它适用于包含对象的数组.

Nan*_*ali 60

可以使用apply将任意数量的参数传递给方法.

对于工会:

// Outputs [1, 4, 5, 6, 2, 3, 7]
var selectedUnion = _.union.apply(_, selected);
Run Code Online (Sandbox Code Playgroud)

对于交叉点:

// Outputs [1]
var selectedIntersection = _.intersection.apply(_, selected);
Run Code Online (Sandbox Code Playgroud)

  • 这很棒,但我们如何在_.chain中使用它? (3认同)
  • 传入_作为第一个参数的任何理由?我知道它在函数中设置'this',但为什么不使用'null'或只是'this'.不能说我在这方面完全理解'这个'. (2认同)

Ala*_*med 5

为什么不使用reduce

_.reduce(selected,function(result,a){
    return _.intersection(result,a);
});
Run Code Online (Sandbox Code Playgroud)