Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/25: Рейтинг темы: голосов - 25, средняя оценка - 4.96
0 / 0 / 0
Регистрация: 17.10.2016
Сообщений: 19

Рандомные элементы массива

01.02.2018, 02:46. Показов 5130. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть массив с 10 именами, нужно рандомно вывести эти 10 имен, но так, чтобы они не повторялись. Пришла идея сделать генератор рандомных чисел от 0 до 9 без повторения. Но при попытке присвоить массиву индекс - выводит undefindet В чем дело?
HTML5
1
2
3
4
5
6
7
8
9
10
<div class="element_one" id="massiv1">1</div>
<div class="element_one" id="massiv2">2</div>
<div class="element_one" id="massiv3">3</div>
<div class="element_one" id="massiv4">4</div>
<div class="element_one" id="massiv5">5</div>
<div class="element_one" id="massiv6">6</div>
<div class="element_one" id="massiv7">7</div>
<div class="element_one" id="massiv8">8</div>
<div class="element_one" id="massiv9">9</div>
<div class="element_one" id="massiv10">10</div>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
var who =['Вадим', 'Глеб', 'Андрей', 'Максим', 'Миша', 'Влад', 'Слава', 'Дима', 'Олег', 'Артем' ];
 
function generateArrayRandomNumber () {
    var totalNumbers        = who.length,
        arrayTotalNumbers   = [],
        arrayRandomNumbers  = [],
        tempRandomNumber;
 
    while (totalNumbers--) {
        arrayTotalNumbers.push(totalNumbers);
    }
 
    while (arrayTotalNumbers.length) {
        tempRandomNumber = Math.round(Math.random() * (arrayTotalNumbers.length - 1));
        arrayRandomNumbers.push(arrayTotalNumbers[tempRandomNumber]);
        arrayTotalNumbers.splice(tempRandomNumber, 1);
    }
    return arrayRandomNumbers;
    
}
 
  document.getElementById('massiv1').innerHTML = who[generateArrayRandomNumber[0]];
    document.getElementById('massiv2').innerHTML = who[generateArrayRandomNumber[1]];
    document.getElementById('massiv3').innerHTML = who[generateArrayRandomNumber[2]];
    document.getElementById('massiv4').innerHTML = who[generateArrayRandomNumber[3]];
    document.getElementById('massiv5').innerHTML = who[generateArrayRandomNumber[4]];
    document.getElementById('massiv6').innerHTML = who[generateArrayRandomNumber[5]];
    document.getElementById('massiv7').innerHTML = who[generateArrayRandomNumber[6]];
    document.getElementById('massiv8').innerHTML = who[generateArrayRandomNumber[7]];
    document.getElementById('massiv9').innerHTML = who[generateArrayRandomNumber[8]];
    document.getElementById('massiv10').innerHTML = who[generateArrayRandomNumber[9]];
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.02.2018, 02:46
Ответы с готовыми решениями:

Рандомные элементы массива
Здравствуйте. Подсткажите пожалуйста, как мне задать массиву рандомные значения? Вот простой код: #include &lt;iostream&gt; ...

Реализовать функцию, добавляющую в заданную строку рандомные элементы на нечётные позиции
Например: Строка: Привет Строка после вставки элементов: 1Р4В7Т #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include...

Выводит рандомные числа при передаче массива в функцию
#include &lt;cstdlib&gt; //подключаем библиотесный модуль для того чтобы заполнить массив рандомными числами #include &lt;iostream&gt; ...

2
566 / 465 / 183
Регистрация: 14.10.2017
Сообщений: 1,259
01.02.2018, 04:09
JavaScript
1
2
3
4
5
let a = generateArrayRandomNumber();
document.getElementById('massiv2').innerHTML = who[a[0]];
document.getElementById('massiv2').innerHTML = who[a[1]];
document.getElementById('massiv2').innerHTML = who[a[2]]; 
// etc
0
the hardway first
Эксперт JS
 Аватар для j2FunOnly
2475 / 1847 / 910
Регистрация: 05.06.2015
Сообщений: 3,610
01.02.2018, 09:54
Цитата Сообщение от aqostic Посмотреть сообщение
JavaScript
1
who[generateArrayRandomNumber[0]];
generateArrayRandomNumber - это функция. Таким образом вы пытаетесь получить значение атрибута "0", но такого атрибута у функции нет - undefined раз. Дальше вы пытаетесь получить элемент массива who с индексом undefined - undefined два.

Можно получить рандомный элемент массива следующим образом:
JavaScript
1
who[Math.round(Math.random() * who.length - 1)];
Такой подход можно применить чтобы перемешать элементы массива. У массива есть методы slice() и splice(). Эти методы позволяют получить заданное количество элементов массива с определённого индекса. Второй изменяет исходный массив - это именно то, что надо в данном случае:
JavaScript
1
2
3
4
5
6
7
8
9
10
var shuffle = function shuffle(arr) {
  var dup = arr.slice(),
    result = [];
 
  while (dup.length) { // 0 - кастуется в boolean false
    result.push(dup.splice(Math.round(Math.random() * dup.length - 1), 1));
  }
 
  return result;
};
Итого:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var shuffle = function shuffle(arr) {
  var dup = arr.slice(),
    result = [];
 
  while (dup.length) {
    result.push(dup.splice(Math.round(Math.random() * dup.length - 1), 1));
  }
 
  return result;
};
 
var who = ['Вадим', 'Глеб', 'Андрей', 'Максим', 'Миша', 'Влад', 'Слава', 'Дима', 'Олег', 'Артем'];
 
var elements = document.querySelectorAll('.element_one'),
  shuffleWho = shuffle(who);
 
for (var i = 0, l = elements.length; i < l; i++) {
  elements[i].textContent = shuffleWho[i];
}
https://jsfiddle.net/j2FunOnly/0jmja3yc/
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.02.2018, 09:54
Помогаю со студенческими работами здесь

Переписать элементы массива, не равные нулю, в начало массива, а нулевые элементы - в конец массива
Дан одномерный массив. Все его элементы, не равные нулю, перепишите (сохраняя их порядок) в начало массива, а нулевые элементы - в конец...

Поменять местами элементы массива А, имеющего нечётный индекс, на элементы массива В, имеющие чётный индекс, и найти минимальные элементы Амах и В мах
даны два массива А и В по 20 элементов в каждом. Поменять местами элементы массива А, имеющего нечётный индекс, на элементы массива В,...

Написать программу, которая сортирует элементы массива, большие введеного значения. Элементы массива получают из фай
Unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; ...

Сформируйте третий массив, в котором в начале расположены элементы первого массива, а затем элементы второго массива
Даны два целочисленных массива. Сформируйте третий массив, в котором в начале расположены элементы первого массива, а затем элементы...

Удалить элементы расположенные между максимальным и минимальным элементами массива Х. Элементы массива Х вычисляются по формуле Xi=((-1)^i)*((i^2)-3*i), где i=1,2,...,10.
Удалить элементы расположенные между максимальным и минимальным элементами массива Х. Элементы массива Х вычисляются по формуле...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru