0

配列の任意の長さの配列があります。交差点を計算したい。

同等だと思う 2 つの方法でこれを実行しようとしましたが、異なる出力が生成されました。

違いは何ですか:

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 -> []

?

そして、それを行うためのより良い方法はありますか?

4

3 に答える 3

3

ここで折る必要はありません。

アンダースコアの交差は、すでに複数の配列を取ることができます。

それで_.intersection.apply(null, a)

また_.intersection([1, 2, 3, 4, 5], [4, 5, 6, 7], [5, 6, 7, 8])

動作します。

于 2013-10-30T15:28:23.220 に答える
2

applyそれを行う最良の方法は、 andを使用することだと思います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 ]
于 2013-10-30T15:35:50.643 に答える
2

_.intersection任意の数の配列を取ります。

単に使用する

_.intersection(arrayA, arrayB, arrayC, ...);

または、配列の配列がある場合

_.intersection.apply(_, arrayOfArrays);
于 2013-10-30T15:27:30.953 に答える