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

使用map生成子数组后,如何更简洁合并为一个主数组?

更简洁的子数组合并方案

嘿,这个场景太常见了!确实不用麻烦地先声明空数组再一个个push,有好几种更简洁的方式,既减少代码量又提升可读性:

1. 扩展运算符(...)——最直观的写法

扩展运算符可以直接把数组的元素“展开”到新数组里,一步就能合并多个子数组:

如果你已经有单独的子数组变量:

const temp = obj.data.map(a => a.temp);
const air = obj.data.map(a => a.air);

// 一行合并成一维数组
const OneArrayToRuleThemAll = [...temp, ...air];

甚至可以一步到位,不用单独定义子数组:

const obj = { data: [ { temp: 1, air: 2, cloud: 3 }, { temp: 100, air: 101, cloud: 102 } ] };

const OneArrayToRuleThemAll = [
  ...obj.data.map(a => a.temp),
  ...obj.data.map(a => a.air)
];
// 结果:[1, 100, 2, 101]

2. Array.concat()——传统但可靠的方法

concat方法本身就是用来合并数组的,它会返回一个新数组,不会修改原数组:

已有子数组变量的情况:

const temp = obj.data.map(a => a.temp);
const air = obj.data.map(a => a.air);

const OneArrayToRuleThemAll = temp.concat(air);

一步到位写法:

const OneArrayToRuleThemAll = obj.data.map(a => a.temp)
  .concat(obj.data.map(a => a.air));

如果后面要加更多子数组(比如cloud数组),直接在concat里继续传参数就行:temp.concat(air, cloud),非常灵活。

补充:关于你原来的push写法

顺便提一句:你原来写的OneArrayToRuleThemAll.push(temp, air)会得到一个二维数组([[1,100], [2,101]]),如果你的目标是把所有元素扁平化到一个一维数组里,这个写法其实不符合预期。如果一定要用push,得改成OneArrayToRuleThemAll.push(...temp, ...air)——但显然这比上面两种方法啰嗦多了,完全没必要。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:52:08