javascript - 使用“for-in”访问对象内部的对象?
问题描述
我有一个 var 设置如下:
var player = {
total: 150,
upgrades: {
item1: {
cost: 100,
id: "1",
},
item2: {
cost: 200,
id: "2",
},
},
}
然后我有以下代码,尝试使用数据:
function checkUpgrades() {
for(var x in player.upgrades)
{
if(player.total >= x.cost) {
$("#"+x.id).prop("disabled","false");
}
else {
$("#"+x.id).prop("disabled","true");
}
}
}
这是周期性运行的循环的一部分,目的是相应地启用或禁用按钮。我遇到的问题是,虽然 for..in 循环可以很好地处理项目,但“x.id”和“x.cost”返回“未定义”。我认为它不是在检索内部数据,但我不知道为什么。有没有更好的方法来做到这一点?
解决方案
给定一个for (x in something)
循环,x
是属性的名称(即字符串"item1"
),而不是值(对象)。
如果您想获得需要显式访问它的值 ( something[x]
)。
推荐阅读
- android - 未解决的参考:Anko 0.10.6 中垂直布局的 lparams
- python - 尽管包中包含 py.typed 标记,但存根文件不包含在分发中
- python - 使用 python 请求在网页上执行 Javascript
- java - 单击 Firebase 通知时打开 MainActivity 以外的其他活动
- android - 自定义类的所有实例的 onTouch 侦听器
- javascript - 用 Javascript 播放音频文件
- android - 底部应用栏在使用片段导航时向上/向下滑动(导航架构组件)
- python-3.x - 当通过 input() 将值附加到列表时,我想防止附加相同的值
- jenkins - 合并作业完成后如何通知 Github?
- reactjs - reactjs语义-ui如何有条件地正确修改JSX标签