我有一个包含速度的地图点数组,我想创建一个每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个点而不管总项数?
答案 0 :(得分:1)
您可以使用Array#slice
和索引,并根据需要计算大小。
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;
答案 1 :(得分:1)
你可以使用splice来设置像这样的块
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;