JavaScript如何通过for循环从多组随机数组中取元素拼接短语
解决方案
方案1:使用二维数组统一管理片段(最推荐)
把所有拼接用的片段数组全部放到一个二维数组中,不需要单独声明part_0、part_1这类独立变量,循环时直接遍历二维数组即可:
// 存储所有片段数组的二维数组 const phraseParts = [ ["Hello", "Hi", "Good morning"], ["I am", "This is", "We are"], ["a front-end developer", "a student", "a freelancer"] ] let phrase = '' for (let i = 0; i < phraseParts.length; i++) { const currentPart = phraseParts[i] // 随机取当前片段中的元素,用Math.floor避免下标越界 const randomItem = currentPart[Math.floor(Math.random() * currentPart.length)] phrase += randomItem + ' ' } // 去除末尾多余的空格 phrase = phrase.trim()
方案2:动态读取变量(仅兼容现有代码时使用)
如果已经提前声明了大量part_0、part_1类的全局变量,无法调整结构的话,可以通过作用域对象动态获取对应变量:
浏览器环境下可以直接从window对象读取:
let phrase = '' // 假设已有3个全局数组part_0、part_1、part_2 for (let i = 0; i < 3; i++) { const currentPart = window[`part_${i}`] const randomItem = currentPart[Math.floor(Math.random() * currentPart.length)] phrase += randomItem + ' ' } phrase = phrase.trim()
跨环境可以用globalThis代替window,但该方案依赖变量的作用域,非全局声明的变量无法读取,因此不推荐优先使用。
注意:尽量用Math.floor代替原写法中的Math.round,可以避免随机数取到临界值时出现数组下标越界的问题,逻辑更严谨。
内容的提问来源于stack exchange,提问作者Kodos23
相关产品推荐
相关产品推荐

