首页 > 解决方案 > 使用“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”返回“未定义”。我认为它不是在检索内部数据,但我不知道为什么。有没有更好的方法来做到这一点?

标签: javascriptjquery

解决方案


给定一个for (x in something)循环,x是属性的名称(即字符串"item1"),而不是值(对象)。

如果您想获得需要显式访问它的值 ( something[x])。


推荐阅读