誰かがここで何が起こっているのか説明してもらえますか? 少なくとも取得するにはどうすればよい1
ですか?
$> for (var i in [{a: 1, b: "ok"}]) { console.log(i); }
0
誰かがここで何が起こっているのか説明してもらえますか? 少なくとも取得するにはどうすればよい1
ですか?
$> for (var i in [{a: 1, b: "ok"}]) { console.log(i); }
0
for ... in
ループはオブジェクトのキーをループするためです。1 つの要素 (要素 0) を持つ配列を渡したので、0 を取得します。
これを行う場合:
for (var i in {a: 1, b: "ok"}) { console.log(i); }
「a」と「b」が得られます。違いは、持っているブラケットです。これにより、オブジェクトは単一の値を持つ配列になり、その値は「a - b」オブジェクトになります。
オブジェクトの値を取得したい場合は、それらを取得する必要があります。残念ながら、オブジェクト リテラルを参照する方法がないため、オブジェクト リテラルから開始する場合はややこしいことになります。変数に入れることができます:
var obj = {a: 1, b: "ok"};
for (var i in obj) { console.log(obj[i]); }
編集— その厄介なローカル変数なしで単一の「クリーンな」ステートメントを維持したい場合:
(function(obj) {
for (var i in obj) { console.log(obj[i]); }
})( {a: 1, b: "ok"} );
var dicts = [{a: 1, b: "ok"}];
for (var i in dicts) { console.log(dicts[i]); }
//yields {a: 1, b: "ok"}
for (var i in dicts) { console.log(dicts[i]['a']); }
//yields 1
{} を変数に格納して、すべての情報を保存してみてください。
c = {a:1,b:'ok'};
for(var i in c){console.log(c[i])};
var dict_array = [{a: 1, b: "ok"}];
for (var i = 0; i < dict_array.length; i++) {
for (var key in dict_array[i]) {
console.log(key + ':' + dict_array[i][key]);
}
}
出力:
a:1
b:ok