オブジェクトからプロパティを削除したい
Javascriptでオブジェクトから特定のプロパティを削除する方法についてまとめます。
具体的には hasOwnProperty
関数で false
を返すように、プロパティを削除します。
例えば
次のようなオブジェクトを定義したとき、a, b, c の各プロパティがあるので hasOwnProperty
関数が true
を返します。d は定義していないので当然 false
を返します。
undefined
や null
の値でもプロパティを持っていると判定されますので、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
定義したプロパティが削除されていることが確認できました。
以上です。
コメントを書く