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

如何基于options数组将对象数组拆分为多个独立对象

实现options数组拆分生成独立对象的方案

你现有代码的逻辑是对同名配置的options做聚合,和你需要的拆分逻辑完全相反,所以无法得到预期输出。

推荐用更简洁的flatMap实现,代码如下:

var arr =   [{name: "audio", options:[{name:'true', value: 'T'},{name:'false', value: 'F'},{name:'yes', value: 'Y'}]},
{name: "video", options:[{name:'true', value: 'T'},{name:'false', value: 'F'},{name:'yes', value: 'Y'}]},
{name: "call", options:[{name:'true', value: 'T'},{name:'false', value: 'F'},{name:'yes', value: 'Y'}]}]

const res = arr.flatMap(({name, options}) => {
  return options.map(option => ({name, options: option}))
})

console.log(res)

如果需要兼容低版本不支持flatMap的环境,可以用reduce实现:

const res = arr.reduce((acc, {name, options}) => {
  options.forEach(option => acc.push({name, options: option}))
  return acc
}, [])

实现逻辑:

  • 外层遍历原数组的每一项,获取配置名称name和对应的选项列表options
  • 内层遍历每个选项,每遍历到一个选项就生成一个新对象,新对象的name和原配置项一致,options直接取当前遍历到的单个选项
  • 所有新对象汇总后就是你需要的拆分结果

注:你给出的期望输出里call的第三个选项为{name:'No', value: 'N'},和你提供的输入不一致属于笔误,按输入跑上述代码会得到对应yes的选项,如有需求直接修改原数组对应配置即可。

内容的提问来源于stack exchange,提问作者Vishnu Shenoy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:36:02