JavaScript | Как генерировать случайные слова из набора символов?

JavaScript | Как генерировать случайные слова из набора символов?

Есть набор символов, которые лежат в массиве:

let myarr = ['а','б','в','г','д','е','ё','ж'];

Нам нужно создать такую функцию при помощи JavaScript, чтобы она могла принимать этот набор символов и нужную длину слова. На выходе функция должна возвращать случайное слово.

 

Решение задачи

Нам нужна внутренняя функция, которая будет возвращать из передаваемого массива случайный элемент.

function getRandomArrayElement(arr){
   return arr[Math.floor(Math.random()*arr.length)]
}

Также нам нужен цикл, который будет учитывать длину будущего слова и закидывать случайные буквы в новый массив.

function randomWordGeneratorBasedOnLength(array, wordlength){
  let a = [];
  function getRandomArrayElement(arr){
    return arr[Math.floor(Math.random()*arr.length)]
  };
  for(let x = 0; x < wordlength; x++){a.push(getRandomArrayElement(array))};
  return a.join('');
}

 

Пример работы функции

Делаем тестовые вызовы:

randomWordGeneratorBasedOnLength([‘а’,’б’,’в’,’г’,’д’,’е’,’ё’,’ж’], 4)
‘бжёб’

randomWordGeneratorBasedOnLength([‘а’,’б’,’в’,’г’,’д’,’е’,’ё’,’ж’], 4)
‘жёва’

randomWordGeneratorBasedOnLength([‘а’,’б’,’в’,’г’,’д’,’е’,’ё’,’ж’], 4)
‘жбёё’

randomWordGeneratorBasedOnLength([‘а’,’б’,’в’,’г’,’д’,’е’,’ё’,’ж’], 20)
‘ёдёдждгжгввжёгадегев’

randomWordGeneratorBasedOnLength([‘а’,’б’,’в’,’г’,’д’,’е’,’ё’,’ж’], 20)
‘егжёбёаеёжжеагввжега’

randomWordGeneratorBasedOnLength([‘а’,’б’,’в’,’г’,’д’,’е’,’ё’,’ж’], 20)
‘жааеёбжеаежёдгдёевёе’

 

Скриншот:

Функция генерации случайных слов нужной длины из набора символов - JavaScript
Функция генерации случайных слов нужной длины из набора символов — JavaScript

 

Информационные ссылки

JavaScript | Случайный элемент массива

JavaScript | Как перемешать массив?

JavaScript | Массивы (Array)

Стандарт ECMAScripthttps://tc39.es/ecma262/multipage/

Стандарт ECMAScript — Раздел «The Math Object» — https://tc39.es/ecma262/#sec-math-object

Стандарт ECMAScript — Раздел «21.3.2.27 Math.random ( )» — https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-math.random

Стандарт ECMAScript — Раздел «21.3.2.16 Math.floor ( x )» — https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-math.floor