You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS生成5个1-100不重复随机数数组的代码正误咨询

问题解答

你当前的实现无法满足生成5个1-100无重复随机数的需求,作为只学了8天JS的新手,敢自己动手写循环尝试已经很棒,下面直接给你拆解代码里的问题,以及好理解的正确写法。

现有代码的核心问题

  • Math.random()API使用错误:这个方法本身不需要传入参数,你写的Math.random(num)里传入固定为0的num没有任何作用;且现有逻辑Math.floor(Math.random()*100)生成的是0-99区间的整数,不符合你要的1-100的数值范围要求。
  • 去重判断的对象完全错了:初始状态下arr是空数组,第一次循环时x=4,arr[x]也就是arr[4]根本不存在,值为undefined。你需要判断的是新生成的随机数是否已经在数组中存在,而不是去判断数组还没填充的位置的元素。
  • 分支判断完全无效:你写的if/else if/else三个分支里,执行的代码全都是直接往数组push新随机数,不管判断结果是什么都不会拦截重复值,等于这段判断写了和没写一样,最终生成的数组很容易出现重复元素。

新手友好的正确实现

逻辑非常直白,不需要复杂写法,顺着需求一步步写就行:

let arr = []
// 只要数组没凑够5个元素,就一直循环生成
while (arr.length < 5) {
  // 生成1-100之间的随机整数
  const randomNum = Math.floor(Math.random() * 100) + 1
  // 检查随机数是否已经在数组里,没存在过才加进去
  if (!arr.includes(randomNum)) {
    arr.push(randomNum)
  }
}
console.log(arr)

这个写法不用提前固定循环次数,每次生成随机数先做重复校验,从根源上避免重复值加入数组,逻辑简单不容易写错,很适合刚入门的阶段使用。

内容的提问来源于stack exchange,提问作者Leonard 356

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 04:48:16