我有一个任意长度的数组数组。我想计算交集。
我尝试以我认为是等效的两种方式进行此操作,但是它们产生了不同的输出。
之间有什么区别?
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 -> []
?
还有更好的方法吗?
最佳答案
我认为最好的方法是使用apply
和intersection
:
var a = [[1,2,3,4,5], [3, 4,5,6,7], [4,5,6,7,8]];
_.intersection.apply(null, a);
// -> returns [ 4, 5 ]