JavaScript中使用map无需外部数组push返回多对象数组是否可行
核心原理说明
JavaScript的Array.prototype.map方法设计为一对一映射,原数组有多少个元素,最终返回的新数组就有多少个元素,你的原数组长度是3,因此仅调用map不可能直接生成长度为6的目标数组,该需求单独用map直接实现不可行。
可行的兼容实现方案
如果你允许使用map+flat组合或者ES2019支持的flatMap方法(无需额外声明空数组、无需调用push方法,核心生成逻辑全部在回调内部完成),可以用如下两种写法:
- 兼容性更好的map+flat写法:
const mixedObjects = [1,2,3].map(num => { // 所有生成逻辑都在map回调内部实现,没有外部数组操作 return [{ a: 'always same' }, { b: num }] }).flat()
- 更简洁的flatMap写法(ES2019+支持):
const mixedObjects = [1,2,3].flatMap(num => { return [{ a: 'always same' }, { b: num }] })
两种写法执行后得到的结果和你期望的完全一致:
[{a: 'always same'},{b: 1},{a: 'always same'},{b: 2},{a: 'always same'},{b: 3}]
内容的提问来源于stack exchange,提问作者Mohammed
相关产品推荐
相关产品推荐

