Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Массив и random (https://javascript.ru/forum/misc/81164-massiv-i-random.html)

Cvetlaya19 11.10.2020 11:06

Массив и random
 
Ребята такая проблема, есть массив:

let imgs = ['image1.png', 'image2.png', 'image3.png']

Перебираю его с помощью random:

function randomImgs () {
$image.src = imgs [Math.floor(Math.random()*imgs.length)]
}

Далее мне надо выполнить условие if/else, чтобы для каждой картинки выводился свой текст:

function () {
randomImgs ()

if ($image.src === 'image1.png') {
$h1.textContent = 'Хорошо'
} else if ($image.src === 'image2.png') {
$h1.textContent = 'Очень хорошо'
} else if ($image.src === 'image3.png') {
$h1.textContent = 'Совсем хорошо'
}

Мой вариант не работает, не могу правильно задать условие для if и else if, голову сломала, пробовала даже так:

if ($image.src === imgs['image1.png'])...
if ($image.src == imgs[0])...

Заранее спасибо! :victory:

laimas 11.10.2020 11:59

А зачем условия, ведь изображения можно хранить сразу с текстом к ним, в массиве объектов, а не массиве. Случайно, это по диапазону индексов этого массива. Далее просто извлекли готовое.

Cvetlaya19 11.10.2020 12:08

Точно. А сработает, если текст идет отдельным блоком?

laimas 11.10.2020 12:14

Цитата:

Сообщение от Cvetlaya19
А сработает, если текст идет отдельным блоком?

var i = 1 //случайно полученный индекс;
const im1 = [
    {image: '1.jpg', text: 'Text 1'},
    {image: '2.jpg', text: 'Text 2'},
    {image: '3.jpg', text: 'Text 3'}
],
im2 = [
    ['1.jpg', 'Text 1'],
    ['2.jpg', 'Text 2'],
    ['3.jpg', 'Text 3']
],
im3 = ['1.jpg', '2.jpg', '3.jpg'],
txt = ['Text 1', 'Text 2', 'Text 3'];

console.log(
    im1[i].image + ' - ' + im1[i].text + '\n' +
    im2[i][0] + ' - ' + im2[i][1] + '\n' +
    im3[i] + ' - ' + txt[i]
)


Выбирайте любой способ, и любой из них, это лучше чем править вывод, вместо того, чтобы изменять входные данные.

Cvetlaya19 11.10.2020 12:37

Спасибо, вроде все поняла, единственное теперь не понятно как добиться у переменной var i рандомного значения.

laimas 11.10.2020 12:44

Как обычно, как и делалось, в чем проблема то?

function getRandom(max) {
  return Math.floor(Math.random() * Math.floor(max));
}

var i = getRandom(im1.length);

Cvetlaya19 11.10.2020 21:05

Дошло) все получилось, спасибо.


Часовой пояс GMT +3, время: 19:53.