2017-02-03 3 views
-1

У меня есть массив точек карты, которые содержат скорости, и я хочу создать новый массив из каждых 25 точек и вставить их в другой массив, называемый кусками. Так это то, что я делаю:Нажимать куски массива в другой массив в JavaScript

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 баллов.

Есть ли способ разбить массив на 25 пунктов независимо от общего количества предметов?

+0

вы можете разделите map_points на 25 и вы получите точные сколько раз будет проходить через. таким образом вы можете сделать обходной путь –

+0

использовать срез для копирования массива в другой массив –

+0

Возможный дубликат [Разделить массив на куски] (http://stackoverflow.com/questions/8495687/split-array-into-chunks) –

ответ

1

вы можете использовать сращивание установить ломти как этого

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

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);
.as-console-wrapper { max-height: 100% !important; top: 0; }