2

私は多くの多くのオブジェクトの次のJavaScript配列を持っています:

[
    {...},
    {...},
    {...},
    .
    .
    .
    .
    .
    {...},
    {...}
]

配列を次のような3つのオブジェクトの行に変換したいと思います。

[
    [ {...}, {...}, {...} ],
    [ {...}, {...}, {...} ],
    [ {...}, {...}, {...} ],
    .
    .
    .
    [ {...}, {...}, {...} ],
    [ {...}, {...}, {...} ]
]

それを行うための最良の方法は何ですか?

4

4 に答える 4

3

さらに別のスニペット(@Florentから採用)

var result = [];

do {
   result.push( data.splice( 0, 3 ) )
} while( data.length );
于 2012-10-23T15:24:11.463 に答える
2

forループを使用します。

var i = 0
  , n = data.length
  , result = [];

for (; i < n; i += 3) {
  result.push([data[i], data[i + 1], data[i + 2]]);
}
于 2012-10-23T15:17:34.660 に答える
2

あなたはループでそれを行うことができます。これにより配列が取得され、配列itemsが作成されますresult

var result = [];
var line;
for (var i = 0; i < items.length; i++) {
  if (i % 3 == 0) {
    line = [];
    result.push(line);
  }
  line.push(items[i]);
}

(このループ方法は、ソース配列が3で正確に割り切れない場合でも機能します。)

于 2012-10-23T15:18:06.203 に答える
0

ちょうど別のオプション:)

var result = arr.reduce(
    function(prev, curr, index) { 
        if(index > 1) { 
            if(prev[prev.length-1].length == 3) 
                prev.push([]); 
            prev[prev.length-1].push(curr); 
            return prev; 
        }
        return [[prev, curr]]; 
    }
);
于 2012-10-23T15:51:19.460 に答える