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

如何提取嵌套对象options数组下所有fields字段并合并为新数组

你原先的代码存在两个核心问题:

  1. obj.options.map(a => a.map(f => f.fields)) 中a是options数组里的单个option对象,不是数组,无法调用map方法,运行会直接报错
  2. 后续使用Object.assign是对象合并逻辑,和你需要的数组合并需求完全不匹配

解法1:使用flatMap(最简洁,ES2019+支持)

flatMap会先对数组执行map映射,再自动把结果扁平化一层,完美适配你的需求:

const final = obj.options.flatMap(option => option.fields);

执行后得到的final就是你要的一维数组,结构如下:

[
  { key: 'brand', label: 'brand' },
  { key: 'size', label: 'Size' },
  { key: 'gender', label: 'Gender' },
  { key: 'condition', label: 'Condition' }
]

解法2:兼容旧环境的reduce写法

如果运行环境不支持ES2019,可以用reduce配合数组合并实现相同效果:

const final = obj.options.reduce((result, option) => {
  return result.concat(option.fields);
}, []);

解法3:扩展运算符写法

也可以先通过map取出所有fields数组,再用扩展运算符展开合并:

const fieldArrays = obj.options.map(option => option.fields);
const final = [].concat(...fieldArrays);

内容的提问来源于stack exchange,提问作者Aleksa Prebiracevic

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 07:39:03