1

誰かがここで何が起こっているのか説明してもらえますか? 少なくとも取得するにはどうすればよい1ですか?

$> for (var i in [{a: 1, b: "ok"}]) { console.log(i); }
0
4

4 に答える 4

4

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"} );
于 2013-07-29T23:03:33.240 に答える
1
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
于 2013-07-29T23:06:29.100 に答える
0

{} を変数に格納して、すべての情報を保存してみてください。

c = {a:1,b:'ok'};
for(var i in c){console.log(c[i])};
于 2013-07-29T23:05:57.347 に答える
0
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
于 2013-07-29T23:11:41.577 に答える