【问题标题】:Push random numbers to array based on length of variable根据变量的长度将随机数推送到数组
【发布时间】:2019-01-12 07:50:09
【问题描述】:
const colors = ['red', 'green', 'blue', 'yellow']
let startingIndex = 2
const random = colors[Math.floor(Math.random() * 4)]
        console.log(random)

        if(startingIndex >= 2) {
            randomColor.push(random)
            console.log(randomColor)
        }

我正在尝试根据 startIndex 的数字将随机单词从绿色/黄色/红色/蓝色推送到 randomColor 数组中,该数字可以是 2-20 之间的任何值。例如startIndex = 4 所以 randomColor arr 应该包含 4 次随机单词 ['red','red','yellow','blue'] 并根据 startingIndex 的长度更改 randomColor arr 中的项目数。 任何人都可以阐明如何实现这一目标吗?

【问题讨论】:

  • “例如,startingIndex = 4 所以 randomColor arr 应该包含 4 次随机单词” - 听起来像 for loop 不会是一个坏主意。
  • 澄清一下,startingIndex 是否代表您期望在 randomColor 数组中的随机值的数量?
  • 您说的“startingIndex 的长度” 令人困惑。您的意思似乎是“startingIndex 的值”。

标签: javascript arrays


【解决方案1】:

你需要一个循环。例如一个简单的for 循环:

const colors = ['red', 'green', 'blue', 'yellow'];
let startingIndex = 5;
const randomColors = [];

for (let i = 0; i < startingIndex; i++) {
    const random = colors[Math.floor(Math.random() * colors.length)]
    randomColors.push(random)
}

console.log(randomColors)

注意:使用colors.length 比硬编码 4 更好,因为这样当您决定添加第五种颜色时,代码就可以了。

您可以采用更实用的编程风格:

function getRandomColors(colors, length) {
    return Array.from({length}, _ =>
        colors[Math.floor(Math.random() * colors.length)]);
}

const randomColors = getRandomColors(['red', 'green', 'blue', 'yellow'], 5)
console.log(randomColors);

【讨论】:

  • 谢谢!这正是我所追求的!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-04
  • 2021-09-07
  • 2016-11-17
  • 2012-02-04
  • 2021-11-29
  • 1970-01-01
  • 2011-12-06
相关资源
最近更新 更多