1. ホーム
  2. ジャバスクリプト

[解決済み】JavaScriptで配列の要素を削除する - delete vs splice

2022-03-18 07:26:15

質問

を使用するのとでは、どのような違いがあるのでしょうか。 delete 演算子 を使用するのではなく、配列要素に Array.splice メソッド ?

例えば

myArray = ['a', 'b', 'c', 'd'];

delete myArray[1];
//  or
myArray.splice (1, 1);

オブジェクトと同じように配列の要素を削除できるのであれば、なぜspliceメソッドを持っているのでしょうか?

どのように解決するのですか?

delete はオブジェクトプロパティを削除しますが、配列の再インデックス化や長さの更新は行いません。このため、あたかも未定義であるかのように見えます。

> myArray = ['a', 'b', 'c', 'd']
  ["a", "b", "c", "d"]
> delete myArray[0]
  true
> myArray[0]
  undefined

実際には値が設定されていないことに注意 undefined となり、配列からプロパティが削除されます。 現れる は未定義です。Chromeの開発ツールでは、この区別を明確にするために、以下のように表示されます。 empty 配列のログを取る際に

> 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"]