【问题标题】:How can I reach a nested element in an array (javascript)如何到达数组中的嵌套元素(javascript)
【发布时间】:2020-09-16 11:21:32
【问题描述】:

我有一个这样的数组:

console.log(this.props.countrysideTypes) 

[{…}]
0:
field: Array(8)
0: "Wood"
1: "Grain"
2: "Grain"
3: "Grain"
4: "Stone"
5: "Iron"
6: "Grain"
7: "Grain"
length: 8
__proto__: Array(0)
id: "-MHLWLm8bFRE2_1aahWk"
userId: "lPqZ8Oj90Se2qBEIzTJq1OSfbo62"
__proto__: Object
length: 1
__proto__: Array(0)

现在我想达到例如第一项“木头”

我试过了

console.log(this.props.countrysideTypes[0])

这给了我:

{field: Array(8), userId: "lPqZ8Oj90Se2qBEIzTJq1OSfbo62", id: "-MHLWLm8bFRE2_1aahWk"}
field: Array(8)
0: "Wood"
1: "Grain"
2: "Grain"
3: "Grain"
4: "Stone"
5: "Iron"
6: "Grain"
7: "Grain"
length: 8
__proto__: Array(0)
id: "-MHLWLm8bFRE2_1aahWk"
userId: "lPqZ8Oj90Se2qBEIzTJq1OSfbo62"
__proto__: Object

但我无法获得更深的嵌套项。我试过了

console.log(this.props.countrysideTypes[0].field) //TypeError: Cannot read property 'field' of undefined console.log(this.props.countrysideTypes[0][0]) //TypeError: Cannot read property 'field' of undefined console.log(this.props.countrysideTypes[0].field[0]) //TypeError: Cannot read property 'field' of undefined console.log(this.props.countrysideTypes.field) // 未定义

【问题讨论】:

  • jsfiddle.net/tevemadar/xd5c0m2t 为您描述的前两次尝试产生相同的输出,并且最后两次尝试按预期工作(打开浏览器的实际 JS 控制台)。如果您的数据表现不同,一个重要的细节将是:它来自哪里?

标签: javascript arrays reactjs


【解决方案1】:

这应该可以工作

console.log(this.props.countrysideTypes[0].field[0]) 

你有一个包含 Object 的数组。在 Object 中有你想要访问的数组,它被分配给属性字段。

【讨论】:

  • 是的,这也是我的假设,但事实并非如此。这给了我:无法读取未定义的属性“字段”
  • 这是访问数组中嵌套对象的方法,检查拼写错误并记录道具以检查您是否收到想要访问的所有内容
【解决方案2】:

感谢您的热心帮助!数据来自 firebase 实时数据库。似乎它嵌套得太深了。 最后它像这样工作:

    let objectArray = Object.entries(this.props.countrysideTypes);

    let types = [];

    objectArray.forEach(([key, value]) => {
        types = value.field;
      });

    console.log(types[0]); //"Wood"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 2020-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-04
    相关资源
    最近更新 更多