Javascript从数组中随机取出不同元素的两种方法


Posted in Javascript onSeptember 22, 2016

一、常规算法

第一种方法较常规,经测试有bug,数据量大以后随机几次返回的对象直接是function而不是object。 当然简单数据类型应该没有这个问题。

示例代码

/**
     从数组中随机抽取数据 2016-09-09
   **/
   function getArrItem(arr, num) {
     var temp_array = new Array();
     for (var index in arr) {
       temp_array.push(arr[index]);
     }
     var return_array = new Array();
     for (var i = 0; i < num; i++) {
       if (temp_array.length > 0) {
         var arrIndex = Math.floor(Math.random() * temp_array.length);
         return_array[i] = temp_array[arrIndex];
         temp_array.splice(arrIndex, 1);
       } else {
         break;
       }
     }
     return return_array;
   }

二、洗牌算法

第二种是使用洗牌算法,亲测有效。

示例代码

/**
      随机化原数组
    **/
    function shuffle(array) {
      var m = array.length,
        t, i;
      // 如果还剩有元素…
      while (m) {
        // 随机选取一个元素…
        i = Math.floor(Math.random() * m--);
        // 与当前元素进行交换
        t = array[m];
        array[m] = array[i];
        array[i] = t;
      }
      return array;
    }
 
//用法
var message = shuffle(totalArr);
message = message.slice(0, 3);

以上就是为大家总结的两种Javascript从数组中随机取出不同元素的方法,希望这篇文章能对大家的学习或者工作带来一定的帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
Mozilla 表达式 __noSuchMethod__
Apr 05 Javascript
js解决弹窗问题实现班级跳转DIV示例
Jan 06 Javascript
JavaScript实现ASC转汉字及汉字转ASC的方法
Jan 23 Javascript
简单封装js的dom查询实例代码
Jul 08 Javascript
node.js实现登录注册页面
Apr 08 Javascript
vue配置请求本地json数据的方法
Apr 11 Javascript
解决vue移动端适配问题
Dec 12 Javascript
vue-cli3使用 DllPlugin 实现预编译提升构建速度
Apr 24 Javascript
微信小程序传值以及获取值方法的详解
Apr 29 Javascript
详解将微信小程序接口Promise化并使用async函数
Aug 05 Javascript
JS实现的碰撞检测与周期移动完整示例
Sep 02 Javascript
微信小程序实现watch监听
Jun 04 Javascript
JavaScript面试题大全(推荐)
Sep 22 #Javascript
JavaScript 是什么意思
Sep 22 #Javascript
利用Node.js制作爬取大众点评的爬虫
Sep 22 #Javascript
JavaScript与java语言有什么不同
Sep 22 #Javascript
JavaScript中数组slice和splice的对比小结
Sep 22 #Javascript
深入理解JavaScript中的并行处理
Sep 22 #Javascript
Actionscript与javascript交互实例程序(修改)
Sep 22 #Javascript
You might like
浅析php变量作用域的一些问题
2013/08/08 PHP
总结PHP如何获取当前主机、域名、网址、路径、端口和参数等
2016/09/09 PHP
jquery的Theme和Theme Switcher使用小结
2010/09/08 Javascript
jquery选择器的选择使用及性能介绍
2013/01/16 Javascript
JavaScript简单实现网页回到顶部功能
2013/11/12 Javascript
深入浅析Extjs中store分组功能的使用方法
2016/04/20 Javascript
jQuery验证插件validate使用详解
2016/05/11 Javascript
Node.js通过身份证号验证年龄、出生日期与性别方法示例
2017/03/09 Javascript
微信小程序实现红包功能(后端PHP实现逻辑)
2018/07/11 Javascript
vue 表单验证按钮事件交由父组件触发的方法
2018/12/17 Javascript
js实现跟随鼠标移动的小球
2019/08/26 Javascript
node解析修改nginx配置文件操作实例分析
2019/11/06 Javascript
[01:14]TI珍贵瞬间系列(六):冠军
2020/08/30 DOTA
举例讲解Python的lambda语句声明匿名函数的用法
2016/07/01 Python
Python中shutil模块的常用文件操作函数用法示例
2016/07/05 Python
Python实现并行抓取整站40万条房价数据(可更换抓取城市)
2016/12/14 Python
python 全局变量的import机制介绍
2017/09/07 Python
python实现汉诺塔算法
2021/03/01 Python
解决python3运行selenium下HTMLTestRunner报错的问题
2018/12/27 Python
Django 过滤器汇总及自定义过滤器使用详解
2019/07/19 Python
python实现图片压缩代码实例
2019/08/12 Python
Python pandas自定义函数的使用方法示例
2019/11/20 Python
Python使用Pandas库常见操作详解
2020/01/16 Python
opencv之颜色过滤只留下图片中的红色区域操作
2020/06/05 Python
详解Python IO编程
2020/07/24 Python
Elasticsearch py客户端库安装及使用方法解析
2020/09/14 Python
python爬虫scrapy基本使用超详细教程
2021/02/20 Python
详解CSS3中nth-child与nth-of-type的区别
2017/01/05 HTML / CSS
大学系主任推荐信范文
2013/12/24 职场文书
会计电算化专业自荐信
2014/03/15 职场文书
2015年元旦文艺汇演主持词
2014/03/26 职场文书
社区清明节活动总结
2014/07/04 职场文书
2014乡镇班子个人对照检查材料思想汇报
2014/09/26 职场文书
师德自我剖析材料范文
2014/10/06 职场文书
Python经常使用的一些内置函数
2022/04/11 Python
微信告警的zabbix监控系统 监控整个NGINX集群
2022/04/18 Servers