如何访问嵌套在对象数组中的指定键值对?
从多层嵌套结构中获取指定值的解决方案
直接访问已知位置的目标值
如果明确目标值的具体位置,可通过链式访问直接获取:
// 获取Max(位于键40对应数组的第1个元素) const maxName = nested[40][0].name; // 或 nested['40'][0].name console.log(maxName); // "Max" // 获取Lucas(位于键50对应数组的第3个元素) const lucasName = nested[50][2].name; // 或 nested['50'][2].name console.log(lucasName); // "Lucas"
利用你尝试过的方法(Object.values/keys/entries)取值
你调用Object.values(nested)得到的是外层对象所有值组成的数组(包含两个子数组),可通过数组索引继续定位:
const values = Object.values(nested); // 从第一个子数组(对应键40)取第一个元素的name console.log(values[0][0].name); // "Max" // 从第二个子数组(对应键50)取第三个元素的name console.log(values[1][2].name); // "Lucas"
通用搜索方法(未知目标位置时)
如果不清楚目标值所在的具体位置,可遍历所有嵌套元素查找:
function getTargetName(nestedObj, target) { // 遍历外层对象的所有数组 for (const arr of Object.values(nestedObj)) { // 在数组中查找name匹配的对象 const match = arr.find(item => item.name === target); if (match) return match.name; } return null; // 未找到时返回null } // 使用示例 console.log(getTargetName(nested, "Max")); // "Max" console.log(getTargetName(nested, "Lucas")); // "Lucas"
你之前的无效代码说明
const [, , {name}] = nested;:解构赋值仅适用于数组或可迭代对象,普通对象无法直接解构,因此无效。console.log(${Object.values[40]});:Object.values是方法,需传入nested调用,且返回数组的索引是0、1而非40,写法错误。
内容的提问来源于stack exchange,提问作者Donut
相关产品推荐
相关产品推荐

