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

时间:2012-05-04 21:13:49

标签: javascript jquery arrays multidimensional-array

  

可能重复:
  Split array into chunks

我正在尝试将值数组转换为新的配对值数组。

例如我需要转换:

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

5 个答案:

答案 0 :(得分:11)

如果您坚持使用地图,则可以这样做:

arr= $.map(arr, function(n, i){
    if (i%2 === 0) return [[n, arr[ i + 1 ]]];
});

答案 1 :(得分:6)

如果您不想在图钉上使用锤子:

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

答案 2 :(得分:3)

您不希望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的解决方案相同。

答案 3 :(得分:3)

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

的偶数时才有效

答案 4 :(得分:3)

另一个例子......

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