JavaScript で配列要素を削除する - delete と splice の違い 質問する

JavaScript で配列要素を削除する - delete と splice の違い 質問する

使用の違いは何ですか?オペレーター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"]

おすすめ記事