まずは、JSONのキーのアクセスについて。
var hoge = { "Sample1":"1" , "Sample2":"2" }; for(i in hoge){ alert(i); } |
実行結果は、Sample1、Sample2と順に表示されます。
では次にアクセス方法について、
var hoge = { "Sample1":"1" , "Sample2":"2" }; for(i in hoge){ alert(hoge[i]); } |
実行結果は、1、2と順に表示されます。
理由はわからないのですが、なぜ、hoge.lengthで長さを取得することができないのか?
hoge.lengthを表示すると、undefinedが返されます。
valueが配列の場合は、当然、lengthを取得することができるんだけど。
var hoge2 = { "Sample3" :["apple","orange"] };
//「2」が返ってくる alert(hoge2["Sample3"].length);
var hoge3 = hoge2["Sample3"];
for(var i=0;i<hoge3.length;i++){ alert(hoge3[i]); }
var hoge2 = { "Sample3" :[ {"title":"apple","img":"orange"} , {"title":"lemon","img":"banana"} ] };
var hoge3 = hoge2["Sample3"]; for(var i=0;i<hoge3.length;i++){ //2回ループが回り、一度目は、「apple」が表示され、 //二度目は、「lemon」が表示される。 alert(hoge3[i]["title"]); } |
うーん、なぞ。
lengthは配列の数を取得するプロパティだからねぇ。
返信削除連想配列は配列と名前はついているけども
JavaScriptのオブジェクトは全部連想配列で出来ているようなもんで・・・
例えば、
document.[DOMのID].~
↑こんな感じでIDを指定してDOMにアクセスできるけど、これって
document = {[DOMのID], DOMオブジェクト}
上記のような連想配列って解釈もできるよね。
でもdocument.lengthでdocument配下全てのオブジェクトの個数はもちろん取得できない訳です。
JavaScriptでは、"配列"は配列プロトタイプを継承したオブジェクトで、"連想配列"はただのKeyを指定する事でオブジェクトを返してくれるマッピング・・・みたいなイメージでいんじゃないかな?
なんか変な所あったらよろしく。
しかし久しぶりに(コードと言えるもんでもないが)コードを書いた。
開発したいよー><