Получение шестнадцатеричного числа Random с использованием массива в JavaScript - PullRequest
0 голосов
/ 18 февраля 2020

Я написал небольшой код, который генерирует случайный цвет. Он основан на массиве, который идет от 0 до 9 и A, B, C, D, E, F:

<!DOCTYPE html>
<html lang="es">

<head>
    <meta charset="utf-8">
    <title>Ejercicio 7</title>
    <script type="text/javascript">

        function changeColor() {
            const intensity = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0, "A", "B", "C", "D", "E", "F"];
            let randomColor1 = intensity[Math.floor(Math.random() * intensity.length)];
            let randomColor2 = intensity[Math.floor(Math.random() * intensity.length)];
            let randomColor3 = intensity[Math.floor(Math.random() * intensity.length)];
            let randomColor4 = intensity[Math.floor(Math.random() * intensity.length)];
            let randomColor5 = intensity[Math.floor(Math.random() * intensity.length)];
            let randomColor6 = intensity[Math.floor(Math.random() * intensity.length)];
            const randomColor = `#${randomColor1}${randomColor2}${randomColor3}${randomColor4}${randomColor5}${randomColor6}`;
            document.body.style.backgroundColor = randomColor;

        }
    </script>
</head>

<body onload="changeColor()">
    <button onclick="changeColor()">Pincha aquí</button>
</body>

</html>

Проблема в том, что я не понимаю этот фрагмент повторяющегося кода:

intensity[Math.floor(Math.random() * intensity.length)]

Я знаю, что это дает мне случайный элемент из массива "интенсивность", но я не знаю, как это работает. Может кто-нибудь объяснить мне? Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 18 февраля 2020

С Math.random() вы получаете число (число с плавающей запятой) от 0 до 1 (но не 1, как указывает Андреас).

Если вы хотите, чтобы число от 0 до X, вы должны умножить на X Math.random() * X.

И индекс интенсивности изменяется от 0 до intensity.length.

. Поэтому вам нужно Math.random() * intensity.length, чтобы получить индекс интенсивности случайным образом.

Результатом этого умножения является число с плавающей точкой, вы можете использовать floor для удаления десятичных дробей, и в этот момент вы получите: Math.floor(Math.random() * intensity.length)

Какой случайный показатель интенсивности получить:

intensity[Math.floor(Math.random() * intensity.length)]
0 голосов
/ 18 февраля 2020

вы можете найти множество примеров генераторов случайных шестнадцатеричных цветов онлайн, например, https://css-tricks.com/snippets/javascript/random-hex-color/:

function randomHexColor() {
  return Math.floor(Math.random()*16777215).toString(16);
}
...