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

JavaScript如何从对象数组中提取目标值生成纯值数组

问题原因

Array.map会根据回调函数的返回值生成新数组,你现在的回调里只执行了console.log(val)打印整个元素,没有返回需要提取的目标值,自然无法得到想要的结果。

修正代码

你给出的数组里两个对象结构不统一:

  • 第一个对象的目标值存在于嵌套属性a.b路径下
  • 第二个对象的目标值直接存在于顶层c属性下

在回调里对应取值返回即可,完整代码如下:

const obj = [
  {
    a: {
      b: 'Paul',
    }
  },
  {  
    c: 'Byeeee',
  }
];

const result = obj.map((val) => {
  return val.hasOwnProperty('a') ? val.a.b : val.c;
});

console.log(result); // 打印结果:['Paul', 'Byeeee']

如果后续数据结构不固定,需要自动提取任意嵌套对象里的最底层原始值,可以写个简单的递归取值逻辑,不用硬编码属性名:

// 通用提取对象最内层原始值的方法
const getLeafValue = (target) => {
  return typeof target === 'object' && target !== null 
    ? getLeafValue(Object.values(target)[0]) 
    : target;
};

const result = obj.map(val => getLeafValue(val));

这个通用方法不管嵌套多少层、属性名是什么,都能拿到最里面的原始值,适配你当前的示例数据运行结果同样是['Paul','Byeeee']。


内容的提问来源于stack exchange,提问作者Digvijay Singh Thakur

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 03:06:16