Ответ 1
Если вы настаиваете на использовании карты, вы можете сделать это следующим образом:
arr= $.map(arr, function(n, i){
if (i%2 === 0) return [[n, arr[ i + 1 ]]];
});
Возможный дубликат:
Разделить массив на куски
Я пытаюсь преобразовать массив значений в новый массив парных значений.
Например, мне нужно преобразовать:
var arr = [1,2,3,4,5,6,7,8];
в
arr = [[1,2], [3,4], [5,6], [7,8]];
Я попытался использовать метод jQuery.map(), как это, но это не сработало для меня:
arr= $.map(arr, function(n, i){
return [n + ',' + n[ i + 1 ]];
});
Если вы настаиваете на использовании карты, вы можете сделать это следующим образом:
arr= $.map(arr, function(n, i){
if (i%2 === 0) return [[n, arr[ i + 1 ]]];
});
Если вы не хотите использовать молот на кинопленке:
var arr = [1,2,3,4,5,6,7,8];
var newarr = new Array();
for (var i=0; i<arr.length; i=i+2) {
newarr.push(arr.slice(i,i+2));
}
Вы не хотите map
, вы хотите reduce
.
Вот что должно работать:
var endArr = [],
arr = [ 1, 2, 3, 4, 5, 6, 7, 8 ],
i = 0;
arr.reduce( function( prev, curr, index ) {
if ( index % 2 === 0 ) {
endArr[ i ] = [ prev, curr ];
}
i++;
} );
И только что-то, о чем я подумал:
var endArr = [],
arr = [ 1, 2, 3, 4, 5, 6, 7, 8 ];
while ( arr.length ) {
endArr.push( arr.splice( 0, 2 ) );
}
Изменить: Arf, это то же решение, что Chris Gutierrez.
не использовать jquery для каждой проблемы:
var arr = [1, 2, 3, 4, 5, 6, 7, 8];
var narr = [];
for (i = 0; i < arr.length; i = i + 2) {
narr[i / 2] = [arr[i], arr[i + 1]];
}
но это работает, только если у вас есть четный счет arr
Другой пример...
var arr = [1 , 2, 3, 4, 5, 6, 7, 8]
var final = []
while(arr.length) {
final.push(arr.splice(0, 2))
}