我正在尝试访问嵌套数组内的特定字段。我的代码是这样的:
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
。任何帮助将不胜感激
答案 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.`);
}
顺便说一句,将值用作属性名称并不常见。
通常,这种键只是对象属性的值。
这也使find
或filter
更直接。
例如:
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.`);
}