有人可以解释一下这里发生了什么吗?我怎样才能至少检索到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
循环遍历对象的键。你传递了一个包含一个元素(元素 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
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
尝试通过将 {} 停放在变量中来保存所有信息。
c = {a:1,b:'ok'};
for(var i in c){console.log(c[i])};