获取嵌套对象值:如何提取嵌套对象的纯值而非对象本身?
问题分析与解决方案
代码存在的问题
- 语法错误:字符串未加引号
原代码中Gloria、female、Alex、male属于字符串字面量,必须用单引号/双引号包裹,否则JS会将其视为未定义变量,直接报错。 - 未处理嵌套对象
Object.values()仅提取当前对象的第一层值,对于students这个嵌套对象,它会直接返回整个对象而非内部的纯值,这就是输出中仍保留完整students对象的原因。 - 数字字面量风险
025、024这类以0开头的数字,在JS中会被解析为八进制数(严格模式下会报错),如果需要保留前导0,建议改为字符串格式。
修改后的代码
根据你期望的纯值输出,这里提供两种实现方式:
方式1:保留students值的数组嵌套结构
// 修正语法问题:字符串加引号,id改为字符串保留前导0 const table = { index: 0, data: { items: [ {students: {name: 'Gloria', age: 24, gender: 'female'}, id: '025'}, {students: {name: 'Alex', age: 27, gender: 'male'}, id: '024'} ], total: 2 } }; // 深入提取嵌套对象的纯值 const result = table.data.items.map(item => { return [Object.values(item.students), item.id]; }); console.log(result);
输出结果:
[ [ [ 'Gloria', 24, 'female' ], '025' ], [ [ 'Alex', 27, 'male' ], '024' ] ]
方式2:将所有纯值合并为一维数组
如果希望把students的所有值和id放在同一个数组中:
const result = table.data.items.map(item => { return [...Object.values(item.students), item.id]; }); console.log(result);
输出结果:
[ [ 'Gloria', 24, 'female', '025' ], [ 'Alex', 27, 'male', '024' ] ]
说明
你示例中的[{Gloria, 24, female}, 025]并非合法的JS结构(对象需要键值对),因此上述实现将纯值整理为数组形式,符合JS语法规范且满足你“仅显示纯值”的需求。
内容的提问来源于stack exchange,提问作者K is Coding
相关产品推荐
相关产品推荐

