Создайте массив из других элементов случайных массивов в цикле for в Javascrypt

#javascript

Вопрос:

Если мы хотим построить фразу, используя случайные слова из массивов, мы могли бы использовать

 part_0=["Hello",....]
part_1=["I am",.....]

phrase=part_0[Math.round(Math.random() *(part_0.length-1))] part_1[Math.round(Math.random() *
(part_1.length-1))] ... part_n[Math.round(Math.random() *(part_n.length-1))]
 

Но, как вы видите выше, это займет слишком много времени для n слов, поэтому вместо этой жирной части я попытался построить фразу с помощью цикла for.
Проблема здесь в том, что в цикле for part_i читается обычным текстом, а не как part_number(i)

 for (var _i = 0; _i < 3; _i  ) {
  phrase.add(part_i);
};
 

Есть идеи, как это решить?
Спасибо

Комментарии:

1. Рассматривали ли вы массив массивов вместо отдельных переменных для каждого массива? Не существует динамического способа доступа к имени переменной, если оно не является свойством объекта

Ответ №1:

Что вам здесь нужно, так это массив этих массивов:

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

let sections = [
    ["Hello,", "Hi,", "Howdy!", "Hey,"],
    ["I am", "You are", "They are", "We are"],
    ["making", "building", "crafting", "decorating"],
    ["a tower", "a machine", "a table", "a chair"],
    ["with", "using", "gluing", "consisting of"],
    ["toilet paper", "plastic cups", "paper clips", "staples"]
];

let phrase = sections.map(pickRandom).join(" ");

console.log(phrase);