0

我需要抓取一些小数组的元素并将它们放在一起组成一个更大的数组。但我不希望那些小数组成为大数组的元素。我只需要他们的元素。然后我需要从大数组中随机选择一个元素。通常,大数组将是:

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

这种方式的问题是我只能选择一个小数组(一组数字),而不是它们的元素(只有一个数字)。例如:

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

有没有其他方法可以将一些数组放在一起并且只能调用其中的一个元素?

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功能两次:

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 回答