【问题标题】:Selecting random array elements and placing into another选择随机数组元素并放入另一个
【发布时间】:2016-09-09 15:44:32
【问题描述】:

我有一个字符串数组,只需将其中的 4 个(随机)放入另一个数组中。

var a = ["Orange", "Red", "Yellow", "Blue", "Black", "White", "Brown", "Green"];
var b = [];
function selectColours(){
    var toRandomise = a[Math.floor(Math.random() * 4)];
    b.push(toRandomise);
}
console.log(b);

我的问题是控制台什么也没显示。

【问题讨论】:

  • 你打电话给selectColours()吗?
  • 这样你就只能得到“蓝色”了。将a[Math.floor(Math.random() * 4)]替换为a[Math.floor(Math.random() * a.length)]

标签: javascript arrays function random


【解决方案1】:

您还需要添加 4 次随机值,以便使用 for 循环

var a = ["Orange", "Red", "Yellow", "Blue", "Black", "White", "Brown", "Green"];
var b = [];

function selectColours() {
  for (var i = 0; i < 4; i++) {
    var toRandomise = a[Math.floor(Math.random() * 4)];
    b.push(toRandomise);
  }
}

selectColours()
console.log(b);

你也可以使用递归。

var a = ["Orange", "Red", "Yellow", "Blue", "Black", "White", "Brown", "Green"];
var b = [], count = 0;


function selectColours() {
  if (count == 4) return true;
  b.push(a[Math.floor(Math.random() * 4)]);
  count++;
  selectColours();
}

selectColours()
console.log(b);

【讨论】:

    【解决方案2】:

    嗯,你并没有真正运行你创建的函数。简单地声明它。

    只需在console.log 之前写上selectColors();

    【讨论】:

    • 这样做只会显示一个随机字符串,而不是我需要存储在数组中的 4 个。
    • 如果你想要四个字符串,而不是一个,你应该把它放在一个循环中。现在你只是得到一个介于 0 和 3 之间的随机数。另请注意,如果你不希望结果重复(例如有两个“红色”),你需要删除元素。
    • 我知道我现在哪里出错了,一​​个循环解决了它,谢谢。
    猜你喜欢
    • 1970-01-01
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-01
    • 1970-01-01
    相关资源
    最近更新 更多