You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

获取嵌套对象值:如何提取嵌套对象的纯值而非对象本身?

问题分析与解决方案

代码存在的问题

  1. 语法错误:字符串未加引号
    原代码中Gloria、female、Alex、male属于字符串字面量,必须用单引号/双引号包裹,否则JS会将其视为未定义变量,直接报错。
  2. 未处理嵌套对象
    Object.values()仅提取当前对象的第一层值,对于students这个嵌套对象,它会直接返回整个对象而非内部的纯值,这就是输出中仍保留完整students对象的原因。
  3. 数字字面量风险
    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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 11:09:16