Javascript,在另一个arrray中创建数组索引的数组

时间:2018-05-12 14:45:48

标签: javascript arrays

我尽力在stackoverflow和互联网上寻找解决我正在构建的东西的方法,但遗憾的是找不到任何方法来解决我的问题。这就是为什么我希望这里有人能够帮助我或者至少给我一些正确方向的指示。

我有一个大小不一的数组:

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);
 });

现在我有一个数组数组。但后来我想将这些较小的数组(块)放在另一个数组中。但是我想动态地在这个新数组中将每个数组插入块中。

像这样:

this.pages = [chunks[0], chunks[1], chunks[2]];

我尝试用for循环来做,但我无法弄明白。你能帮助我吗?

2 个答案:

答案 0 :(得分:0)

为什么不只是帮助chunks

chunks'长度为3,恰好是pages的所需长度。

this.pages = chunks;

答案 1 :(得分:0)

使用lodash库中的chunk函数。创建一个元素数组,将元素分成大小的长度。如果数组不能均匀分割,则最终的块将是剩余的元素。

EXA) _.chunk(array,[size = 2])//它将创建一个长度为2的数组。

https://lodash.com/docs/4.17.10#chunk