【问题标题】:Targeting an array of objects in JavaScript [duplicate]在 JavaScript 中定位对象数组 [重复]
【发布时间】:2017-08-09 06:22:11
【问题描述】:

我有一个这种格式的值:

var state = [{"industry-type":"football","your-role":"coach"}]

我想输出“足球”。我该怎么做?

我试过state[0].industry-type,但它返回一个错误:

Uncaught ReferenceError: type is not defined

任何帮助表示赞赏。

【问题讨论】:

  • 你拥有的是一个对象数组,而不是 JSON。

标签: javascript


【解决方案1】:

它不喜欢您的属性名称中的“-”,请尝试:

state[0]['industry-type']

【讨论】:

    【解决方案2】:

    发生这种情况是因为您无法直接使用 - 访问属性。

    var state = [{"industry-type":"football","your-role":"coach"}];
    
    console.log(state[0]['industry-type']);

    【讨论】:

      【解决方案3】:

      - 符号在 Javascript 中是保留的,你不能用它来引用对象的属性,因为 Javascript 认为你正在尝试做减法:state[0].industry - type; 因此错误“Uncaught ReferenceError: type is not已定义" - 它正在寻找一个名为 type 的变量来减去它,但它找不到。

      请通过以下方式引用它:

      state[0]['industry-type']
      

      因为在 Javascript 中,object.propertyobject['property'] 是相等的。


      对于它的价值,如果您可以控制这些名称,最好在 Javascript 中使用 Camel Case 命名事物,因此您的变量将定义为:

      var state = [{"industryType":"football","yourRole":"coach"}]
      

      然后,您可以像这样访问它:

      state[0].industryType
      

      【讨论】:

        【解决方案4】:

        为了能够使用点符号,那么你的:

        ...属性必须是有效的 JavaScript 标识符,即一系列 字母数字字符,还包括下划线 ("_") 和 美元符号 ("$"),不能以数字开头。

        来自MDN

        就像其他答案指出的那样,您必须使用方括号表示法来访问不是有效 JavaScript 标识符的对象的属性名称。

        例如

        state[0]["industry-type"]
        

        相关的 SO 问题:

        What characters are valid for JavaScript variable names?

        【讨论】:

          【解决方案5】:

          您需要对属性使用括号表示法 -

          state[0]['industry-type']

          【讨论】:

            猜你喜欢
            • 2020-05-20
            • 1970-01-01
            • 2018-03-25
            • 2021-09-14
            • 2018-12-18
            • 1970-01-01
            • 1970-01-01
            • 2014-08-08
            • 1970-01-01
            相关资源
            最近更新 更多