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

如何简洁实现JavaScript数组中相邻元素的两两合并?

数组两两元素合并的简洁实现方式

这里提供几种比手动遍历+splice更简洁的实现方案,均基于创建新数组的方式(避免修改原数组,更符合函数式编程习惯):

方案1:使用Array.from

利用Array.from的映射功能,直接按分组规则生成新数组:

const x = ['1', '2', '3', '4', '5', '6'];
const merged = Array.from({ length: x.length / 2 }, (_, index) => {
  return x[index * 2] + x[index * 2 + 1];
});
console.log(merged); // 输出: ['12', '34', '56']

原理:通过指定新数组长度为原数组的一半,每个索引对应原数组中一组相邻的两个元素,直接拼接成新元素。

方案2:使用Array.reduce

通过累加器逐步构建结果数组:

const x = ['1', '2', '3', '4', '5', '6'];
const merged = x.reduce((result, current, idx) => {
  if (idx % 2 === 0) {
    // 偶数索引时,将当前元素作为新组的起始加入结果
    result.push(current);
  } else {
    // 奇数索引时,拼接到结果数组的最后一个元素上
    result[result.length - 1] += current;
  }
  return result;
}, []);
console.log(merged); // 输出: ['12', '34', '56']

原理:遍历原数组时,区分奇偶索引,偶数位初始化新组,奇数位补全当前组。如果原数组长度为奇数,最后一个元素会单独留在结果数组中,兼容性更好。

方案3:简化版for循环

如果觉得高阶函数不够直观,也可以用更高效的for循环(无需修改原数组):

const x = ['1', '2', '3', '4', '5', '6'];
const merged = [];
for (let i = 0; i < x.length; i += 2) {
  merged.push(x[i] + (x[i + 1] || ''));
}
console.log(merged); // 输出: ['12', '34', '56']

原理:每次步进2个索引,直接取当前和下一个元素拼接,x[i+1] || ''用于处理数组长度为奇数的情况,避免拼接undefined。

这些方案都不需要修改原数组,代码更简洁,可读性和维护性也优于splice修改原数组的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 17:48:29