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

如何在JavaScript中将数组拆分为3个不等长的子数组?

问题

假设有如下数组:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

我希望将其拆分为3个数组:前X个元素组成第一个数组,最后X个元素组成第三个数组,剩余元素组成第二个数组,示例如下:

#1 - [0, 1, 2]
#2 - [3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
#3 - [13, 14, 15]

请问有没有比以下代码更简洁高效的实现方式?

现有实现代码:

const splitBy = 3;
const originalArray = Array.from(Array(16).keys());
const result = [
  originalArray.slice(0, splitBy),
  originalArray.slice(splitBy, -splitBy),
  originalArray.slice(-splitBy),
];

console.log(result)
回答

你的现有代码已经是兼顾简洁、高效和可读性的最优方案之一了——slice本身是数组高效提取操作,写法清晰易懂。如果非要追求更紧凑的形式,只能在变量命名或语法上做简化,但核心逻辑和效率不会有变化,比如:

const splitBy = 3;
const arr = Array.from(Array(16).keys());
const res = [arr.slice(0, splitBy), arr.slice(splitBy, -splitBy), arr.slice(-splitBy)];
console.log(res);

这只是缩短了变量名,本质和原代码完全一致。

另外,也可以尝试用解构赋值,但这种写法反而会降低可读性,没有实际效率提升:

const splitBy = 3;
const arr = Array.from(Array(16).keys());
const [, ...middle] = arr.slice(splitBy);
const result = [arr.slice(0, splitBy), middle.slice(0, -splitBy), arr.slice(-splitBy)];

显然这种写法不如原代码直观。

总结来说,你的原代码已经是最优解,不需要额外优化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 11:10:34