下面是我试图实现的一些示例代码:
pingpong = {
paddleA: {
speed: 5,
},
paddleB: {
speed: 6,
},
paddleAI: {
AI1: "paddleA",
AI2: "paddleB"
}
}
paddleAI = pingpong.paddleAI;
paddleA = pingpong.paddleA;
paddleB = pingpong.paddleB;
for (paddle in paddleAI) {
document.write(paddleAI[paddle].speed);
}当我运行此代码时,它返回“未定义”。
我试图使用paddleAI中的文本值作为我想要访问的桨的速度。
如何使代码返回paddleA和paddleB的速度值
注意:--这只是与我的实际代码相似的演示,因此我没有太多空间来戏剧性地重构存储和访问我的值的方式。
发布于 2012-02-07 17:01:42
这可能就是你想要的..。
使用pingpong.paddleAI的内容告诉你什么是可用的.
您的问题是,您在循环中使用了paddle,期望得到桨名,而实际上您正在获取属性名(例如.AI1)
https://stackoverflow.com/a/5263872/555384
for (paddle in paddleAI) {
document.write(pingpong[paddleAI[paddle]].speed);
}虽然这看起来像真的很糟糕的方法.
还有,你后面的逗号会让IE很适合.删除对象/数组文本声明中的最后一个逗号
发布于 2012-02-07 17:00:35
演示
您希望遍历pingpong.paddleAI的键,而不仅仅是paddleAI。另外,您希望获取属性的paddleAI值,而不是键。
for (paddle in pingpong.paddleAI) {
var keyVal = pingpong.paddleAI[paddle];
if (pingpong[keyVal].speed)
console.log(pingpong[keyVal].speed);
else //if you want
console.log("no speed on " + keyVal);
}发布于 2012-02-07 17:01:59
想想你想要的是:
pingpong = {
paddleA: {
speed: 5,
},
paddleB: {
speed: 6,
},
paddleAI: {
AI1: "paddleA",
AI2: "paddleB",
},
}
for (paddle in pingpong.paddleAI) {
document.write(pingpong[pingpong.paddleAI[paddle]].speed);
}https://stackoverflow.com/questions/9180442
复制相似问题