如何访问数组中的嵌套对象

时间:2020-01-28 23:21:51

标签: javascript arrays

我正在尝试访问嵌套数组内的特定字段。我的代码是这样的:

var array1 = [];

const data =  { [userId]: [{
             id: id,
             name: fullName,
             email: userEmail },
            ],
          };

array1.push(data);

如果我打印此:

console.log("index 0: ", array1[0]);

它给出以下结果:

index 0:  {
  buMqSZpEaKZABffDGNs5jzVK36Y2: [
    {
      id: '65',
      name: 'nameTest',
      email: 'myexmail@gmail.com'
    }
  ]
}

但是,我想知道如何访问userId内的信息,例如userId.name并能够找到特定的userId。例如,在array1中找到userId“ aePoUZpkUnlAOMNBGNs5ynMD36L1”并显示其信息,就像我喜欢activeSockets[0].indexOf()一样。在大多数情况下,我尝试访问其中的字段都说Cannot read property '' of undefined。任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

您可以find数组中用户ID的对象。

var array1 = [];

var data =  { ['ABC123']: [{
     id: 1,
     name: 'john',
     email: 'john.doe@nomail.com'
      },
    ],
  };

array1.push(data);

let userId = 'ABC123';

let userObj = array1.find((x)=> x[userId] !== undefined);

if(userObj) {  // did the find return an object?
    let userData = userObj[userId][0];
    console.log(`name: ${userData.name}`);
    console.log(userData);
}
else {
    console.log(`user ${userId} not found.`);
}

顺便说一句,将值用作属性名称并不常见。
通常,这种键只是对象属性的值。

这也使findfilter更直接。

例如:

var array1 = [];

array1.push({
         userid : 'ABC123',
         id: 1,
         name: 'john',
         email: 'john.doe@nomail.com'
      });

let userId = 'ABC123';
let userData = array1.find((x)=> x.userid === userId);

if(userData) {  // did the find return an object?
    console.log(`name: ${userData.name}`);
    console.log(userData);
}
else {
    console.log(`user ${userId} not found.`);
}