无法从Javascript对象的多维数组中提取值

时间:2016-10-26 13:12:16

标签: javascript arrays json object

我尝试使用Javascript对象处理某些数据。这是对象本身(从JSON解析),定义为 accounts

{
  startIndex: 0,
  pageSize: 20,
  pageCount: 1,
  totalCount: 1,
  items: [
    {
      id: 123456,
      emailAddress: 'test@test.com',
      userName: 'test@test.com',
      firstName: 'John',
      lastName: 'Hancock',
      customerSet: 'default',
      commerceSummary: [
        Object
      ],
      contacts: [
        Object
      ],
      userId: '92834439c29389fj292',
      notes: [

      ],
      attributes: [
        Object
      ],
      segments: [
        Object
      ],
      taxExempt: false,
      externalId: '2100010368',
      isAnonymous: false,
      auditInfo: [
        Object
      ],
      isLocked: false,
      isActive: true,
      hasExternalPassword: false,
      customerSinceDate: 2016-06-23T18: 26: 46.000Z
    }
  ]
}

虽然我可以毫无问题地检索accounts.items,但我在从项目本身检索单个值(例如id或emailAddress)时遇到了一些问题。执行accounts.items [id]或accounts.items [emailAddress]不起作用,但我相信它是因为项目可以超过1,所以我应该指定"第一个结果&#34 ;对于该列表中的项目。如果是这种情况,如何检索第一个数组的emailAddress或id?上述JSON对象的期望结果应为" 123456"如果是id和" test@test.com"如果是电邮提前谢谢。

3 个答案:

答案 0 :(得分:1)

你是对的,首先你需要引用数组的第一个元素。然后你可以查询它的属性。

例如,要获取您要编写的第一个项目的ID和电子邮件地址

accounts.items[0].id
accounts.items[0].emailAddress

数组元素从JavaScript中的索引0开始,因此数组的第一个元素的索引为0,第二个元素为1,依此类推。

答案 1 :(得分:1)

Items是一个数组,emailAddress是一个Key,然后你可以使用:

获取值
accounts.items[0].emailAddress

答案 2 :(得分:1)

您的items是一个数组。您必须通过索引(例如items[0])从中获取数据。如果您要查找具有其属性的项目,请使用Array.find方法。

  

find方法为每个元素执行一次回调函数   出现在数组中,直到找到一个回调返回true的地方   值。如果找到这样的元素,find会立即返回该值   那个元素。否则,find返回undefined。回调是   仅为已分配值的数组的索引调用;它   不会为已删除或从不删除的索引调用   被赋予了价值。

var accounts = {
  startIndex: 0,
  pageSize: 20,
  pageCount: 1,
  totalCount: 1,
  items: [
    {
      id: 123456,
      emailAddress: 'test@test.com',
      userName: 'test@test.com',
      firstName: 'John',
      lastName: 'Hancock',
      customerSet: 'default'
    }
  ]
};

var sampleAccount = accounts.items.find(function (item) {
  return item.id == 123456;
});

if (sampleAccount) {
  console.log(sampleAccount.emailAddress);
}