[Javascript] オブジェクトから指定したプロパティを削除する方法(delete演算子)

[Javascript] オブジェクトから指定したプロパティを削除する方法(delete演算子)

オブジェクトからプロパティを削除したい

Javascriptでオブジェクトから特定のプロパティを削除する方法についてまとめます。

具体的には hasOwnProperty 関数で false を返すように、プロパティを削除します。

例えば

次のようなオブジェクトを定義したとき、a, b, c の各プロパティがあるので hasOwnProperty 関数が true を返します。d は定義していないので当然 false を返します。

undefinednull の値でもプロパティを持っていると判定されますので、undefined を代入して上書きしてもうまく機能しません。

var obj = { a: 1, b: null, c: undefined };
console.log(obj.hasOwnProperty("a")); // true
console.log(obj.hasOwnProperty("b")); // true
console.log(obj.hasOwnProperty("c")); // true
console.log(obj.hasOwnProperty("d")); // false

このようなオブジェクトから a だけを削除したいという場合に、delete 演算子が使えます。

delete演算子

delete 演算子について、上記ページで次のように書かれています。

JavaScript delete 演算子は、オブジェクトからプロパティを削除します。同じプロパティへの参照がそれ以上保持されない場合は、自動的に解放されます。

使い方は簡単です。構文は次のようになります。

delete object.property 
delete object['property']

引数

object

オブジェクト名、またはオブジェクトとして評価される式

property

削除するプロパティです。

戻り値

非 strict モードでは、プロパティが編集不可の場合、false が返ります。その他の場合すべてで true が返ります。

戻り値で削除の成功判定ができるようです。

サンプルコード

var obj = { a: 1, b: null, c: undefined };
console.log(obj.hasOwnProperty("a")); // true
console.log(obj.hasOwnProperty("b")); // true
console.log(obj.hasOwnProperty("c")); // true
console.log(obj.hasOwnProperty("d")); // false

delete obj.a;
delete obj["b"];
console.log(obj.hasOwnProperty("a")); // false
console.log(obj.hasOwnProperty("b")); // false
console.log(obj.hasOwnProperty("c")); // true

定義したプロパティが削除されていることが確認できました。

以上です。

Javascriptカテゴリの最新記事