我有一个任意长度的数组数组。我想计算交集。

我尝试以我认为是等效的两种方式进行此操作,但是它们产生了不同的输出。

之间有什么区别?

var a = [[1,2,3,4,5], [3, 4,5,6,7], [4,5,6,7,8]]
_.foldl(a, function(a, b) { return _.intersection(a, b) } )
// Works as expected -> [4, 5]


和这个:

var a = [[1,2,3,4,5], [4,5,6,7], [5,6,7,8]]
_.foldl(a, _.intersection )
// Does not work -> []




还有更好的方法吗?

最佳答案

我认为最好的方法是使用applyintersection

var a = [[1,2,3,4,5], [3, 4,5,6,7], [4,5,6,7,8]];
_.intersection.apply(null, a);
// -> returns [ 4, 5 ]

10-06 15:46