【问题标题】:cannot access properties of json objects inside array无法访问数组内 json 对象的属性
【发布时间】:2020-04-08 10:17:34
【问题描述】:

我有一个对象数组,比如

[
   {
      "id":17368,
      "creationDate":1566802693000,
      "status":"InProgress",
      "type":"NEW",
      "agentType":"Master"
   },
   {
      "id":17368,
      "creationDate":1566802693000,
      "status":"InProgress",
      "type":"NEW",
      "agentType":"Master"
   },
   {
      "id":17368,
      "creationDate":1566802693000,
      "status":"InProgress",
      "type":"NEW",
      "agentType":"Master"
   },
   {
      "id":17368,
      "creationDate":1566802693000,
      "status":"InProgress",
      "type":"NEW",
      "agentType":"Master"
   }
]

但是当尝试使用 console.log(array[0].id) 访问对象属性“id”时会抛出“无法读取未定义错误的属性 id”

但是,仅使用 console.log(array[0]) 记录第一个对象会成功打印该对象。

{id: 17368, creationDate: 1566802693000, …}

使用array.map(x => console.log(x.id)) 打印 id 列表也会成功打印 id 列表。

我处于需要专门访问前几个的情况。我哪里错了?

【问题讨论】:

  • 尝试使用数组[0][id]
  • 您是否正在使用任何 ajax 调用获取 array 的数据?
  • @user2063635 — 为什么?该属性似乎被称为id,并且没有声明该名称的变量。
  • @user2063635:试过了。引发参考 id 未定义
  • 您还需要共享该代码,例如您将console.log(array[0].id) 放在回调内部还是回调外部?

标签: javascript arrays reactjs


【解决方案1】:

试试这个console.log(array[0] && array[0].id)

或者你可以像这样使用从 lodash-es 获取:

 import { get } from 'lodash-es'

const id=get(array[0], 'id', '')

【讨论】:

  • 使用第一种方式打印它。但为什么会这样呢?
  • array[0] && array[0].id 表示:如果array[0]为真,则打印array[0].id
  • 这是一个简单的测试,只是为了确保对象存在并且它没有未定义,因为在渲染组件时,数组可能尚未填充,这就是您未定义的原因。请将此答案标记为有用
  • 试图在 ajax 调用完成之前打印。只需一个简单的检查。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-05
  • 1970-01-01
  • 2016-04-07
  • 1970-01-01
  • 1970-01-01
  • 2020-08-02
  • 2021-08-23
相关资源
最近更新 更多