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

如何在保持目标数组长度不变的前提下合并两个数组

问题描述

需要将array_A合并到array_B中,要求合并后的结果数组长度与原array_B完全一致。举个例子:

const array_A = [1, 2, 3, 4];
const array_B = [0, 0, 0, 0, 0, 0, 0];

期望得到的结果是:

const result = [1, 2, 3, 4, 0, 0, 0];

但直接用array_A.concat(array_B)会得到长度为11的数组,显然不符合要求:

[1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0];
解决方案

这里提供几种可行的实现方式:

方法一:slice + concat 拼接

思路是先保留array_A的所有元素,再截取array_B中从array_A长度位置开始的剩余元素,最后把两部分拼接起来,结果长度自然和array_B一致。

const array_A = [1, 2, 3, 4];
const array_B = [0, 0, 0, 0, 0, 0, 0];
const result = array_A.concat(array_B.slice(array_A.length));
// result: [1, 2, 3, 4, 0, 0, 0]

方法二:splice 替换元素

如果允许修改原数组,可以直接用splice替换array_B开头的元素;如果需要保留原数组,先做一次浅拷贝再操作。

const array_A = [1, 2, 3, 4];
const array_B = [0, 0, 0, 0, 0, 0, 0];
// 浅拷贝原array_B,避免修改原数组
const result = [...array_B];
// 从索引0开始,替换掉array_A长度的元素,换成array_A的内容
result.splice(0, array_A.length, ...array_A);
// result: [1, 2, 3, 4, 0, 0, 0]

方法三:map 遍历生成新数组

遍历array_B的每个元素,判断当前索引是否在array_A的范围内,是则取array_A对应元素,否则保留array_B的元素,可读性较强。

const array_A = [1, 2, 3, 4];
const array_B = [0, 0, 0, 0, 0, 0, 0];
const result = array_B.map((item, index) => 
  index < array_A.length ? array_A[index] : item
);
// result: [1, 2, 3, 4, 0, 0, 0]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 09:10:44