#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);