迭代dicts数组不能正常工作

时间:2013-07-29 23:01:51

标签: javascript

有人可以解释一下这里发生了什么吗?我如何至少检索1

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

4 个答案:

答案 0 :(得分:4)

因为for ... in循环遍历对象的。你传递了一个带有一个元素的数组(元素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"} );

答案 1 :(得分: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

答案 2 :(得分:0)

尝试通过将{}停放到变量中来保存所有信息。

c = {a:1,b:'ok'};
for(var i in c){console.log(c[i])};

答案 3 :(得分: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