在JavaScript中将数组块推入另一个数组

时间:2017-02-03 11:38:39

标签: javascript

我有一个包含速度的地图点数组,我想创建一个每25个点的新数组,然后将它们推入另一个名为chunk的数组中。所以这就是我在做的事情:

var chunks = []; // the array of chunks
var tempArray = []; //used for storing current chunk
var currentLoop = 0; //used for checking how many items have been taken
for (var i = 0; i < gon.map_points.length; i++) {
    if (currentLoop == 26) { // if the current items stored is above 25
        chunks.push(tempArray); // push the chunk
        currentLoop = 0; // reset the count
        tempArray = []; // reset the chunk
    }
    tempArray.push(gon.map_points[i].speed); // add item into chunk
    currentLoop++; // increase count
}

所以这个工作正常,除非地图点数组不是完美的点数(例如它可能是117),所以我不会将最后17个点添加到我的数组中。< / p>

有没有办法将数组分成25个点而不管总项数?

2 个答案:

答案 0 :(得分:1)

您可以使用Array#slice和索引,并根据需要计算大小。

&#13;
&#13;
var array = Array.apply(null, { length: 65 }).map(function (_, j) { return j; }),
    chunks = [],
    chunkSize = 25,
    i = 0;

while (i < array.length) {
    chunks.push(array.slice(i, i + chunkSize));
    i += chunkSize;
}

console.log(chunks);
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
&#13;
&#13;

答案 1 :(得分:1)

你可以使用splice来设置像这样的块

&#13;
&#13;
var s = [];
var result = [];
function generate(){
 for(var i=0 ; i< 117; i++){
   s.push(i);
 }
}
generate();
//console.log(s)

while(s.length > 25){
  //console.log(s.splice(0,25))
  result[result.length] = s.splice(0,25);
}

result[result.length] = s;

console.log(result);
&#13;
&#13;
&#13;