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

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

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个不同的数的数组
上面这个有重大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;
}
}

  

js从数组中随机获取n个不重复的数据的更多相关文章

  1. 从数组中随机取n条不重复的数据

    工作中经常遇到有关数组的一些操作 1. 从数据中随机取n条不重复的数据 (PS:下面的S.each是KISSY.each方法,大家可以改为for循环) /* 1 从数组arr中随机取n条不重复的数据 ...

  2. js 从数组中随机获取一个值

    // 获取随机数 var rand = Math.floor( Math.random() * this.peoples.length ); // 随机从数组中取出某值(不会改变原数组) var da ...

  3. php 从一个数组中随机获取固定数据

    <?php /* * * 通过一个标识,从一个数组中随机获取固定数据 * $arr 数组 * $num 获取的数量 * $time 随机固定标识值,一般用固定时间或者某个固定整型 * */ fu ...

  4. JS从数组中随机取出几个数组元素的方法

    原文链接:http://caibaojian.com/js-get-random-elements-from-array.html js如何从一个数组中随机取出一个元素或者几个元素. 假如数组为· v ...

  5. js从数组中随机取出不同的元素

    前言 上午处理个需求需要从一个总数组中随机取出不同的元素.共使用两个方法.第一种方法较常规,经测试有bug,数据量大以后随机几次返回的对象直接是function而不是object. 当然简单数据类型应 ...

  6. js在数组arr中随机获取count数量的元素

    // 在数组arr中随机获取count数量的元素; const getRandomArrayElements = (arr, num) => { // 新建一个数组,将传入的数组复制过来,用于运 ...

  7. JS案例之8——从一个数组中随机取数

    近期项目中遇到一个需求,从一个列表中随机展示列表的部分内容,需求不大,JS也非常容易实现.主要是运用到了Math对象的random方法,和Array的splice方法. 思路是先新建一个数组,存放所有 ...

  8. PHP中如何在数组中随机抽取n个数据的值 - array_rand()?

    PHP中如何在数组中随机抽取n个数据的值? 最佳答案 array_rand() 在你想从数组中取出一个或多个随机的单元时相当有用.它接受 input 作为输入数组和一个可选的参数 num_req,指明 ...

  9. JS去除数组中重复值的四种方法

    JS去除数组中重复值的四种方法 1 /// <summary>            o[this[i]] = "";  }      }       newArr.p ...

随机推荐

  1. Lucene.Net 3.0.3如何从TokenStream中获取token对象

    Lucene.Net最高版本为3.0.3,并且apache已经不再提供Lucene.Net的更新,没仔细研究过Lucene.Net的所有版本,Lucene.Net3.0.3遍历TokenStream获 ...

  2. win7_32下编译FFmpeg

    运行环境:  VC2010软件:                 [附:本文所用软件安装包:http://download.csdn.NET/detail/sinat_36666600/9705438 ...

  3. jquery试题

    1.下面哪种说法是正确的? 您的回答:jQuery 是 JavaScript 库 2.jQuery 使用 CSS 选择器来选取元素? 您的回答:正确 3.jQuery 的简写是? 您的回答:$ 符号 ...

  4. 《Java程序设计》实验3

    20145318 <Java程序设计>实验3 实验内容 使用 git 上传代码 使用 git 相互更改代码 实现代码的重载 PSP 队友链接 http://www.cnblogs.com/ ...

  5. C++开学第一次作业(5.4)

    开学第一次作业(5.4) 代码传送门 题目 Create a program that asks for the radius of a circle and prints the area of t ...

  6. C#的switch case注意

    参数可以是 switch 语句中的 参数必须是一个整型或枚举类型,或者是一个 class 类型,其中 class 有一个单一的转换函数将其转换为整型或枚举类型. 所以用string也可以,6666

  7. Centos6优化系统服务脚本

    #!/bin/bash SysVer=`cat /etc/redhat-release | awk -F'release' '{print $2}' | awk -F'[ .]+' '{print $ ...

  8. openwrt中如何在一个软件包中使能busybox中的工具

    答:在软件包的Makefile中定义一个宏Package/package-name/config 举例:笔者自己制作了一个名为hello的软件包,但是这个软件包依赖busybox中的ifdown de ...

  9. Spring Boot企业微信点餐系统

    第1章 课程介绍 包括项演示.课程概述.课程安排.学习前提等的介绍, 让同学们了解这课程 1-1 课程介绍 第2章 项目设计 包括需求分析,项?目设计,项?目架构,数据库设计等等. 2-1 项目设计 ...

  10. c#的逆向工程-IL指令集

    一些 IL 语言解释:  跳转指令集合 Public field Static     Beq     如果两个值相等,则将控制转移到目标指令. Public field Static     Beq ...