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() メソッドを使用します。