JavaScript使用Map方法打印嵌套对象name属性失败如何解决
实现方案
问题分析
- 你定义的变量
x本身是数组类型,不需要额外调用Object.values()处理,直接遍历数组元素即可 - 内层
map的回调函数没有设置返回值,无法获取到name属性的结果
可行代码
const x = [{ a: { name: "X", age: "25" }, b: { name: "Y", age: "30" } }] // 方案1:用map提取所有name后批量打印 const allNames = x.flatMap(item => Object.values(item).map(innerObj => innerObj.name)) allNames.forEach(name => console.log(name)) // 输出结果: // X // Y // 方案2:遍历过程中直接打印 x.forEach(item => { Object.values(item).map(innerObj => innerObj.name).forEach(name => console.log(name)) })
逻辑说明
flatMap会先执行外层遍历的逻辑,再自动把内层返回的数组合并为一维数组,避免得到嵌套格式的结果- 内层
map明确返回innerObj.name,即可提取到所有内层对象的name属性 - 如果你不需要保留提取到的name数组,只是要实现打印需求,也可以把内层
map替换为forEach直接操作
内容的提问来源于stack exchange,提问作者user15815618
相关产品推荐
相关产品推荐

