js从数组中随机获取n个不重复的数据

做云课堂的作业时遇到一要求,实现刷新页面时显示不同数据,(数组中20个据,页面加载10个)。思路就是从0-19中随机生成10个不同的数,让数组取下标输出数据。

下面是在num的范围内生成n个不重复的数。例如从10以内随机生成5个不同的数randomNum(10,5);

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
function randomNum(num,n) {
if(typeof num!=="number"||typeof n!=="number") return false//对象检测
  var aNum=[];         
  if (num<=n) {
    for (var j = 0; j < num; j++) {
      aNum.push(j);
    };                 
    return aNum;
  }         //如果n大于num就生成0到num-1的每一个数
    else{
      for (var i = 0; i < num; i++) {
         var random=Math.round(Math.random()*num);
           if (aNum.indexOf(random)==-1) {
              aNum.push(random);
              if (aNum.length==n) {
                return aNum;
              };
           }
      
    }
}       //从0至num-1中随机获得n个不同的数的数组<br><br>上面这个有重大bug,谢谢评论区大神提醒,改进如下:function randomNum(num,n) {
if(typeof num!=="number"||typeof n!=="number") return false//对象检测
  var aNum=[];        
  if (num<=n) {
    for (var j = 0; j < num; j++) {
      aNum.push(j);
    };                
    return aNum;
  }         //如果n大于num就生成0到num-1的每一个数
    else{
      while(aNum.length<n){
        var random=Math.round(Math.random()*num);
        if (aNum.indexOf(random)==-1) {
           aNum.push(random);
        }
      }
      return aNum;
    }
}

  

posted @   稀算客  阅读(3699)  评论(4编辑  收藏  举报
编辑推荐:
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
阅读排行:
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 趁着过年的时候手搓了一个低代码框架
· 用 C# 插值字符串处理器写一个 sscanf
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!
点击右上角即可分享
微信分享提示