3

JavaScript で、カードのデッキをシャッフルするかのように 2 つの配列をマージする簡単な方法はありますか?

例えば:

[ "1", "2", "3" ] + [ "a", "b", "c" ]

=> [「1」、「a」、「2」、「b」、「3」、「c」]

4

4 に答える 4

3

このアクションは通常、「zip」と呼ばれます。

Underscore.jsにはそれが実装されています。

var a1 = [ "1", "2", "3" ];
var a2 = [ "a", "b", "c" ];
var zipped = _.zip(a1, a2);

ランダムな順序が必要な場合は、次を使用できますshuffle

var shuffled = _.shuffle(a1.concat(a2));
于 2013-10-01T05:03:28.820 に答える
0

反復せずにそれを行うことはできませんが、一部の配列関数の背後に反復を隠すことができます。

var a = [ "1", "2", "3" ];
var b = [ "a", "b", "c" ];

// only works if a and b have the same length
var c = a.concat(b).map(function(item, index, arr){
  return index % 2 ? arr[arr.length/2 + (index+1)/2 - 1] : arr[index/2];
});

console.log(c);
于 2013-10-01T05:11:24.643 に答える