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

如何将对象的键映射到对应数组值生成所需的对象数组?

实现方案

1. 最简写法(ES2019+ 支持)

使用Object.entries结合flatMap,无外部可变变量,逻辑连贯:

const src = { a: [1, 2, 3] }
const result = Object.entries(src).flatMap(([key, valueArr]) => 
  valueArr.map(item => ({ [key]: item }))
)

这个写法天然支持源对象包含多个数组属性的场景,比如src = {a:[1,2], b:[3,4]},会自动输出[{a:1}, {a:2}, {b:3}, {b:4}]。

2. 兼容旧环境的reduce写法

如果运行环境不支持flatMap,可以用reduce实现同样的效果:

const result = Object.entries(src).reduce((res, [key, valueArr]) => 
  res.concat(valueArr.map(item => ({ [key]: item }))),
  []
)

3. 单键场景极简写法

如果可以确定源对象永远只有1个属性,可以直接简化为:

const key = Object.keys(src)[0]
const result = src[key].map(item => ({ [key]: item }))

以上方案都避免了原写法中外部可变数组、副作用操作的问题,符合函数式编程的简洁原则。

内容的提问来源于stack exchange,提问作者Alex. A

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 07:24:04