【JavaScript】オブジェクトから要素を削除する (original) (raw)

今回はJavaScriptで以下のJavaの記事を同じ様なケース。

plugout.hateblo.jp

JavaScriptでクラスを利用せず、次の様にオブジェクト(連想配列)を生成した場合の話。

例: string1.js

let data = {"key": "value"};
console.log(data); // {key: 'value'}と出力される

この状態でkeyというキーを消し去りたい場合に、単純にnullを代入してもキー情報が残ってしまう。

例: string2.js

let data = {"key": "value"};
data["key"] = null;
console.log(data); // {key: null}と出力される
console.log(Object.keys(data)); // ['key']と出力される

値だけでなくキーも抹消したい場合には**delete演算子**を使用する。

developer.mozilla.org

例: string3.js

let data = {"key": "value"};
delete data['key']; // 問題なく削除できた場合にはtrueが返る
console.log(data); // {}と出力される
console.log(Object.keys(data)); // []と出力される

ただしstrictモードで編集不可のプロパティだった場合は例外が発生するので注意。

また配列に対しても**delete演算子**が利用できるが、この場合は対象の要素だけが消える動きをする。

例: string4.js

let arr = ["A", "B", "C"];
delete data[1]; // 問題なく削除できた場合にはtrueが返る
console.log(arr); // ["A", empty, "C"]と出力される
console.log(arr.length) // 3と出力される