8

重複の可能性:
配列をチャンクに分割

値の配列をペアの値の新しい配列に変換しようとしています。

たとえば、変換する必要があります:

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

5 に答える 5

10

mapの使用を主張する場合は、次のようにすることができます。

arr= $.map(arr, function(n, i){
    if (i%2 === 0) return [[n, arr[ i + 1 ]]];
});
于 2012-05-04T21:25:08.380 に答える
7

画鋲にハンマーを使用したくない場合:

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));
}
于 2012-05-04T21:27:39.593 に答える
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++;
} );

そして、私が考えたもう1つのこと:

var endArr = [],
    arr = [ 1, 2, 3, 4, 5, 6, 7, 8 ];

while ( arr.length ) {
    endArr.push( arr.splice( 0, 2 ) );
}

編集: Arf、それはChris Gutierrezと同じソリューションです。

于 2012-05-04T21:27:44.350 に答える
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

于 2012-05-04T21:27:51.557 に答える
3

もう一つの例...

var arr = [1 , 2, 3, 4, 5, 6, 7, 8]
var final = []
while(arr.length) {
    final.push(arr.splice(0, 2))
}
于 2012-05-04T21:37:35.847 に答える