0

私はjavascriptを使用していて、2つの配列を同期して、両方の配列が同じインデックス位置を持つようにしようとしています。

    var array1 = ["word1","word2","word3","word4","word5"];
    var array2 = [1,2,3,4,5];

    array2.sort(function(){ return Math.random() -.5});

これにより、array2が[2,3,1,5,4]のようにスクランブルされます。

同じ順序を取得するには、array1が必要です。["word2", "word3", "word1", "word 5", "word4"]

これどうやってするの?

4

4 に答える 4

2

別の構造を使用する方が良いでしょう。すなわち

[{k: 1, v:'word1'}, {k: 2, v:'word2'}]

代わりにそれを並べ替えます

于 2012-04-16T11:20:28.460 に答える
0

両方の配列の値をリンクする必要があります。これを行う簡単な方法は、それらを3番目の配列に配置することpairs[index] = [ array1[index], array2[index] ]です。このペア配列を元の配列と同じように並べ替えてから、ペアを元の配列に分割します。

于 2012-04-16T11:26:21.087 に答える
0

連想配列を使用します。次に、キーを (最終的には 3 番目の配列として) シャッフルし、それに応じて最初の 2 つの配列を再配置します。

編集:申し訳ありませんが、これはjavascriptではなくPHPとして読みました。私の間違い。配列の代わりにオブジェクトを使用することもできます。

于 2012-04-16T11:19:18.603 に答える
0

このようなことは、それを行うための非常に簡単な方法です。

//assume array1 is like in your example and 
//array2 is the result of the randomization
var result = [];
for(var i = 0; i < array2.length; i++) {
    result[i] = array1[array2[i]];
}
于 2012-04-16T11:19:46.750 に答える