首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问"for in“循环中的子对象?

访问"for in“循环中的子对象?
EN

Stack Overflow用户
提问于 2012-02-07 16:58:32
回答 5查看 214关注 0票数 1

下面是我试图实现的一些示例代码:

代码语言:javascript
复制
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中的文本值作为我想要访问的桨的速度。

如何使代码返回paddleApaddleB的速度值

注意:--这只是与我的实际代码相似的演示,因此我没有太多空间来戏剧性地重构存储和访问我的值的方式。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-02-07 17:01:42

这可能就是你想要的..。

使用pingpong.paddleAI的内容告诉你什么是可用的.

您的问题是,您在循环中使用了paddle,期望得到桨名,而实际上您正在获取属性名(例如.AI1)

https://stackoverflow.com/a/5263872/555384

代码语言:javascript
复制
for (paddle in paddleAI) {
    document.write(pingpong[paddleAI[paddle]].speed);
}

虽然这看起来像真的很糟糕的方法.

还有,你后面的逗号会让IE很适合.删除对象/数组文本声明中的最后一个逗号

票数 2
EN

Stack Overflow用户

发布于 2012-02-07 17:00:35

演示

您希望遍历pingpong.paddleAI的键,而不仅仅是paddleAI。另外,您希望获取属性的paddleAI,而不是键。

代码语言:javascript
复制
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);
}
票数 1
EN

Stack Overflow用户

发布于 2012-02-07 17:01:59

想想你想要的是:

代码语言:javascript
复制
pingpong = {
    paddleA: {
        speed: 5,
    },
    paddleB: {
        speed: 6,
    },
    paddleAI: {
        AI1: "paddleA",
        AI2: "paddleB",
    },
}

for (paddle in pingpong.paddleAI) {
    document.write(pingpong[pingpong.paddleAI[paddle]].speed);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9180442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档