使用の違いは何ですか?オペレーターdelete
配列要素に方法Array.splice
?
例えば:
myArray = ['a', 'b', 'c', 'd'];
delete myArray[1];
// or
myArray.splice (1, 1);
オブジェクトと同じように配列要素を削除できるのに、なぜ splice メソッドが必要なのでしょうか?
ベストアンサー1
delete
オブジェクトのプロパティは削除されますが、配列のインデックスは再作成されず、長さも更新されません。これにより、未定義のように見えます。
> myArray = ['a', 'b', 'c', 'd']
["a", "b", "c", "d"]
> delete myArray[0]
true
> myArray[0]
undefined
実際には値に設定されておらずundefined
、プロパティが配列から削除され、未定義のように見えることempty
に注意してください。Chrome 開発ツールは、配列をログに記録するときに出力することで、この区別を明確にします。
> myArray[0]
undefined
> myArray
[empty, "b", "c", "d"]
myArray.splice(start, deleteCount)
実際には要素を削除し、配列のインデックスを再作成し、長さを変更します。
> myArray = ['a', 'b', 'c', 'd']
["a", "b", "c", "d"]
> myArray.splice(0, 2)
["a", "b"]
> myArray
["c", "d"]