【问题标题】:Accessing nested json object's properties returns undefined [duplicate]访问嵌套的 json 对象的属性返回未定义的 [重复]
【发布时间】:2016-05-07 01:10:22
【问题描述】:
var validCoins = {
      "nickel": {
        "weight": 5.00,
        "diameter": 21.21,
        "thickness": 1.95,
        "value": 0.05
      },
      "dime": {
        "weight": 2.27,
        "diameter": 17.91,
        "thickness": 1.35,
        "value": 0.10
      },
      "quarter": {
        "weight": 5.67,
        "diameter": 24.26,
        "thickness": 1.75,
        "value": 0.25
      }
    };

方法一:

Object.keys(validCoins).forEach(function(coinType) {
      alert(coinType.weight);
}

方法二:

for (var key in validCoins){
//Checking for hasOwnpProperty here doesn't make a difference
        alert(key["weight"]);
    }

这些似乎都不起作用,它返回未定义,我错过了什么? (我是否必须导入库或其他东西?)我打算使用纯 javascript 来做到这一点。

【问题讨论】:

  • Object.keys 给你……等等……对象的钥匙!使用validCoins[coinType].weight
  • alert(coinType).
  • 这不是我想要的@FelixKling 我也已经看过那篇帖子但没有得到答案。
  • 那时您还没有完全阅读答案。 “如果属性名称是动态的并且我事先不知道它们怎么办?” 部分描述了如何迭代属性。并准确解释您接受的答案所显示的内容。

标签: javascript json object nested


【解决方案1】:
var validCoins = {
      "nickel": {
        "weight": 5.00,
        "diameter": 21.21,
        "thickness": 1.95,
        "value": 0.05
      },
      "dime": {
        "weight": 2.27,
        "diameter": 17.91,
        "thickness": 1.35,
        "value": 0.10
      },
      "quarter": {
        "weight": 5.67,
        "diameter": 24.26,
        "thickness": 1.75,
        "value": 0.25
      }
    };

for (var key in validCoins) {
  if (validCoins.hasOwnProperty(key)) {
    alert(validCoins[key].weight);
  }
}

Fiddle

【讨论】:

    猜你喜欢
    • 2020-08-09
    • 1970-01-01
    • 2020-07-14
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    • 1970-01-01
    • 2021-08-02
    • 1970-01-01
    相关资源
    最近更新 更多