我有一段非常简单的代码,不能像我期望的那样工作。
<script>
var m = {0:[1]}
document.write(JSON.stringify(m[0]) + "<br>");
for(var c in m[0]) document.write(c);
</script>
输出:
[1]
0
但我期待得到:
[1]
1
我想我对JavaScript的工作方式有一些误解。
答案 0 :(得分:3)
for(var c of m[0]) document.write(c);
for..in运算符传递键(数组中唯一的键是0),for..of运算符传递值(但它的全新[ES6])
或者,在c的位置获取数据:
for(var c in m[0]) document.write(m[0][c]);
甚至更优雅:
m[0].forEach(document.write);
请注意,您的结构如下所示:
var m = {0:[1]}
//is actually:
var m = {
0:{
0:1,
prototype:Array.prototype
}
};
答案 1 :(得分:1)
如果您需要迭代m
的所有键,那么:
for(var c in m) document.write(m[c]);
如果您只需要选择0
的{{1}}键,那么:
m
答案 2 :(得分:1)
你正在打印c,我想你要打印m [x]
function run() {
var m = {0:[1]}
document.write(JSON.stringify(m[0]) + "<br>");
for(var c in m[0]) document.write(m[c]);
}
&#13;
<button onclick="run()">Try it</button>
&#13;