JavaScript - 配列の要素を削除する delete 演算子の使い方と注意点

JavaScript で配列の要素を削除するのに delete 演算子を使うことができます。

但し注意点として、delete 演算子で削除するのは undefined を代入するのと同じです。

要素間を詰めて削除したい場合は、 delete 演算子ではなく、splice() メソッドを使います。

delete 演算子の概要

delete 演算子はオブジェクトからプロパティを削除します。 同じように、配列の要素を削除することもできます。

delete 演算子のサンプルコード

次のコードは、配列 arr の 2番目の要素を delete 演算子で削除しています。

var arr = [1, 2, 3, 4, 5];

delete arr[1];

console.log(arr);        // Array [ 1, <1 個の空行>, 3, 4, 5 ]
console.log(arr.length); // 5
console.log(arr[1]);     // undefined

上のコードからわかるように、 delete 演算子で削除するのは、実質的に「undefied」を代入するのと同じです。

配列の長さ(要素数)は変わらず、 削除した要素を参照すると「undefied」が返ってきます。

いわゆる「疎な配列」(要素が0から順に埋まっていない配列)となります。

delete 演算子の問題点

多くの場合、「要素を削除」 = 「要素間を詰める」ことだと思います。

delete 演算子は要素間は詰めずに疎な配列となりますから、 要素間を詰めたい場合には使えません。

要素間を詰めて削除する場合は、splice() メソッドを使います。

(参考記事: 配列の要素を削除する時に、要素間を詰める方法)

先程のケースだと、次のように記述します。


delete arr[1];

↓↓↓↓

arr.splice(1,1);

まとめ

配列の要素を削除するのに detele 演算子を使うことができます。

注意点として、delete 演算子は要素間を詰めない場合にに使用し、 要素間を詰める場合は splice() メソッドを使用します。

スポンサードサーチ

シェアする

  • このエントリーをはてなブックマークに追加

フォローする