2010/09/22

[javascript]連想配列の要素の削除

このエントリーをはてなブックマークに追加
連想配列の要素の削除について、誤解しやすいポイントを書き留めておきます。

deleteを使う

obj[a] = null;
null指定だと、obj.aというプロパティがnullの値を持つとして、残ってしまいます。
残っていると、for~inに引っかかるため、都合が悪いことが起こる可能性があるわけです。

連想配列の要素の削除には、deleteを使用しましょう。
delete obj[a];

すべての要素を消す

すべての要素を消すためにはfor~inで回してあげればよいです。
var obj = {a:1,b:2,c:3,d:4};
for(var key in obj){
    delete obj[key];
}
配列が対象だと全体の配列数が変化してしまうので、注意しないといけません。
けれど、連想配列は平気のようです。ちゃんと消えます。

連想配列についての補足

オブジェクトというのはもれなく連想配列です。オブジェクトのプロパティを利用した構造を連想配列と呼んでいるのです。
obj["a"]という書き方は、obj.aと書いても同じです。

面白いのはobj["a.b"]と書くこともできることです(改行を入れることもできる)。
これはもちろん、obj["a.b"]とobj.a.bは意味が異なるので注意。
/* これでも余裕で動く */
var obj = {};
obj["\n"] = 1; 
alert(obj["\n"]); /* 1が表示されます */

0 件のコメント :

コメントを投稿