javaScript从单个值的数组返回一个新的配对值数组

可能重复:
将数组拆分为块

我试图将值数组转换为新的配对值数组。

例如,我需要转换:

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 

不要为每个问题使用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时才有效

你不想要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的解决方案相同。

另一个例子…

 var arr = [1 , 2, 3, 4, 5, 6, 7, 8] var final = [] while(arr.length) { final.push(arr.splice(0, 2)) }