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

JavaScript中如何将分割后的子数组动态存入新数组

问题描述

我已经在Stack Overflow和全网查找过解决方案,但没找到合适的方法。我有一个长度可变的数组:

this.data = [ 
  { icon:'icon1.png', audio:'audio1.mp3', id:'id1', name: 'name1'}, 
  { icon:'icon2.png', audio:'audio2.mp3', id:'id2', name: 'name2'}, 
  { icon:'icon3.png', audio:'audio3.mp3', id:'id3', name: 'name3'}, 
  { icon:'icon4.png', audio:'audio4.mp3', id:'id4', name: 'name4'}, 
  { icon:'icon5.png', audio:'audio5.mp3', id:'id5', name: 'name5'}, 
  { icon:'icon6.png', audio:'audio6.mp3', id:'id6', name: 'name6'}, 
  { icon:'icon7.png', audio:'audio7.mp3', id:'id7', name: 'name7'}, 
  { icon:'icon8.png', audio:'audio8.mp3', id:'id8', name: 'name8'}, 
  { icon:'icon9.png', audio:'audio9.mp3', id:'id9', name: 'name9'}, 
  { icon:'icon10.png', audio:'audio10.mp3', id:'id10', name: 'name10'}, 
  { icon:'icon11.png', audio:'audio11.mp3', id:'id11', name: 'name11'}, 
  { icon:'icon12.png', audio:'audio12.mp3', id:'id12', name: 'name12'} 
]

我需要将该数组分割为指定长度的子数组,若无法均分则最后一个子数组包含剩余元素,已经通过以下代码实现:

var chunksize = 4; 
var chunks = []; 
this.data.forEach((item)=>{ 
  if(!chunks.length || chunks[chunks.length-1].length == chunksize) 
    chunks.push([]); 
  chunks[chunks.length-1].push(item); 
});

现在我得到了一个二维数组chunks,希望将其中的每个子数组动态存入新数组this.pages,而非手动写入如this.pages = [chunks[0], chunks[1], chunks[2]]的代码。我尝试用for循环实现,但未成功,求解决方法。

解决方案

其实你要做的事情比想象中简单,因为chunks本身就是符合你需求的结构——它的每个元素就是分割好的子数组,所以直接处理它就能得到this.pages:

方法1:直接赋值(最快方式)

如果不需要this.pages和chunks完全独立(后续修改其中一个不会影响另一个的场景),直接赋值就行:

this.pages = chunks;

方法2:创建独立拷贝(避免引用关联)

如果希望this.pages是全新的数组,和chunks互不影响,可以用扩展运算符或者slice方法:

// 扩展运算符
this.pages = [...chunks];
// 或者slice方法
this.pages = chunks.slice();

方法3:用for循环实现(符合你的尝试方向)

如果你还是想用for循环完成,可能之前的写法有小问题,正确的实现可以是这样:

this.pages = [];
for (let i = 0; i < chunks.length; i++) {
  this.pages.push(chunks[i]);
}

或者用forEach遍历:

this.pages = [];
chunks.forEach(chunk => {
  this.pages.push(chunk);
});

本质上chunks已经是你需要的pages结构了,所以不管用哪种方式,核心都是把chunks里的子数组批量转移到this.pages中~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:33:31