2016-05-16 6 views
0

私はArrayオブジェクトのメソッドを連鎖しようとしていますが、それはできません。シンプルなJavaScriptメソッドの連鎖

var arr = [1,2,3]; 
arr.splice(-3, 1, 'foot').splice(arr.length,0, 'hand'); 
console.log(arr) // ['foot', 2, 3] 

//trying to get ['foot', 2, 3, 'hand'] 

これは機能しません。 2番目のspliceを新しいステートメントに分割する必要があります。なぜこれは機能しませんか? JavaScriptコードで何度も連鎖が行われているのを見たことがあります。

+0

「手」に単一のコードを与える –

答えて

2

Array.prototype.spliceは、削除された要素を含む配列を返します(documentation pageにあります)。

基本的に、いくつかの方法では連鎖が可能であり、いくつかの方法ではできません。これが初めての場合は、ドキュメントを参照することができます。

より正確には、配列の大部分のメソッドは新しい配列(スプライスを除く)を作成するため、同じ配列の同じインスタンスに異なるメソッドを適用しないため、技術的にはチェーンではありません。典型的なクローニング連鎖法は、filter,map,findである。

+0

配列メソッドが連鎖可能かどうかを調べるためのプロパティがありますか?または、新しい配列を返すメソッドがチェーン化可能であると仮定する必要がありますか? – inthenameofmusik

+0

この場合も、どの配列でも配列メソッドを使用できます。したがって、メソッドが配列を返す場合は、配列を「連鎖」することができます。しかし、それは新しい配列であるため、常に期待通りの結果を出すわけではありません。そのため、前にdocを読んだり(またはいくつかのテストをする)ことが重要です。例えば、あなたは2つの 'splice'呼び出しを連鎖しましたが、あなたが期待していた結果と連鎖しませんでした。 – floribon