2012-01-22 9 views
4

私はそうのような配列を返すために減らす使用しようとしている:アンダースコアを使用すると、配列の返り値を減らすことができますか?

var myArray = [1,2,3]; 
_.reduce(myArray, function (seed, item) { return seed.push(item);}, []); 

私はそれだけでmyarrayのような配列を生成することを期待しています。最初の項目の代わりに、seedは配列です。次に、2番目の項目では、seedは数値です。これによりエラーが発生し、3番目の項目には到達しません。

ここではどのような処理が行われますか?

+1

なぜこのように 'reduce'を使用する必要がありますか?配列を複製する必要がある場合は、配列をスライスするほうがよいでしょう。 – dfsq

+0

真剣に、これは 'myArray.slice()'のほうがはるかに良いでしょう – Domenic

+0

これは例です。私は実際に配列をソートしてグループに分類しようとしていましたが、それは_.sortBy()で行うことができます。機能的に言​​えばmapとreduceは、他のより複雑なリスト理解関数のビルディングブロックです。だから私の質問は、reduceがリストを返さなかった理由を理解するように見えます。リストを返すわけではありません。 – QueueHammer

答えて

13

実際には、seed.push()は変更されたseedを返しません。

_.reduce(myArray, function (seed, item) { seed.push(item); return seed; }, []); 
関連する問題