0

いくつかの小さな配列の要素を取得し、それらを組み合わせてより大きな配列を作成する必要があります。しかし、これらの小さな配列を大きな配列の要素にしたくありません。私は彼らの要素が必要です。次に、大きな配列から 1 つの要素のみをランダムに選択する必要があります。通常、大きな配列は次のようになります。

Array.prototype.randomElement = function () {
return this[Math.floor(Math.random() * this.length)]
}

var small_1_array = [1,2,3,4];
var small_2_array = [5,6,7,8,9];
var small_3_array = [10,11,12];

var big_array = [small_1_array, small_2_array, small_3_array];
console.log("big_array is: " + big_array);

結果:

big_array is: 1,2,3,4,5,6,7,8,9,10,11,12

この方法の問題は、小さな配列 (数値のグループ) の 1 つしか選択できず、その要素 (数値のみ) を選択できないことです。例えば:

console.log("a random number from big_array is: " + big_array.randomElement());

結果:

a random number from big_array is: 1,2,3,4

そして、これは私が考えることができる解決策です:

var rearrange_array = (big_array.toString()).split(",");
console.log("rearrange_array is : " + rearrange_array);

結果:

rearrange_array is : 1,2,3,4,5,6,7,8,9,10,11,12

今私が実行すると:

console.log("a random number from rearrange_array is: " + rearrange_array.randomElement());

結果は次のようになります。

a random number from rearrange_array is: 2

いくつかの配列をまとめて、それらの 1 つの要素のみを呼び出すことができる他の方法はありますか?

4

2 に答える 2

0

を使用Array.concatします。

この配列を他の配列や値と結合した新しい配列を返します。

あなたの場合:

var small_1_array = [1,2,3,4];
var small_2_array = [5,6,7,8,9];
var small_3_array = [10,11,12];

var big_array = small_1_array.concat(small_2_array, small_3_array);
console.log("a random number from big_array is: " + big_array.randomElement());
于 2012-10-27T14:50:03.497 に答える
0

randomElement関数を 2 回適用するだけです。

console.log("a random number from one of the arrays is: "
  + big_array.randomElement().randomElement());

もちろん、小さな配列をまとめて、新しい巨大な配列から選択することもできます。それを行う方法は連結です:

var rearrange_array = Array.prototype.concat.apply([], big_array);
// or, without the big_array variable:
var rearrange_array = small_1_array.concat(small_2_array, small_3_array);
// then:
return rearrange_array.randomElement();
于 2012-10-27T14:52:41.450 に答える