2017-03-08 5 views
-2

これは意図した動作ですか?空の配列がここに返されると思います。配列に要素が1つしかない場合、なぜarray.splice()が機能しないのですか?

はJavaScript

let arr = [1]; 
 
console.log(arr.splice(0, 1))

コンソール

1 
+4

正しい結果である '1'を返します。 –

+0

しかし、インデックス0から開始して1つのアイテムを削除すると、空の配列が返されないのはなぜですか? –

+0

'splice()'は元の配列から 'spliced/cut/removed'された値を返します。 'console.log(arr)'を試してください。それが空であることがわかります。 –

答えて

2

それはあなたの場合には、[1]である、削除されたものを返すため。電話後にarrが空になります。

let arr = [1]; 
 
arr.splice(0, 1); 
 
console.log(arr);

+0

ohh私はそれが変更された配列を返したと思った –

0

削除された要素の配列を返しArray.prototype.splice()

は、例を参照してください。

現在、配列の現在の状態ではなく、操作の戻り値を記録しています。

0

スプライス()メソッドは 既存の要素を除去すること、および/または新たな要素を追加することによって、配列の内容を変更します。 Reference

このメソッドの構文は次のとおりです。あなたが2番目の構文を使用して、0番目のインデックスで開始し、1を削除したいことを意味しdeleteCountとしてスタートとして01を渡している

array.splice(start) 
array.splice(start, deleteCount) 
array.splice(start, deleteCount, item1, item2, ...) 

item(配列の値として1ではありません)。

このメソッドは、削除された要素を含む配列を返します。 1つの要素だけが削除された場合は、1つの要素の配列が返されます。要素が削除されない場合、空の配列が返されます。

この場合、結果は[1]です。つまり、今削除したばかりのアイテムの値が1の配列です。

関連する問題