首页 > 解决方案 > 在Javascrypt的for循环中从其他随机数组元素构建数组

问题描述

如果我们想使用数组的随机词构建一个短语,我们可以使用

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))]

但是正如您在上面看到的那样,对于许多单词来说,这将花费太长时间,所以我尝试使用 for 循环来构建短语,而不是那个胖部分。这里的问题是,在 for 循环中,part_i 被读取为纯文本,而不是 part_number(i)

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

有什么办法解决这个问题吗?谢谢

标签: javascript

解决方案


您需要的是这些数组的数组:

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


推荐阅读