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 相关文章推荐
js中call与apply的用法小结
Dec 28 Javascript
js数值和和字符串进行转换时可以对不同进制进行操作
Mar 05 Javascript
js使用正则实现ReplaceAll全部替换的方法
Jul 18 Javascript
node.js中的console.info方法使用说明
Dec 09 Javascript
Jquery中$.post和$.ajax的用法小结
Apr 28 Javascript
js实现跨域访问的三种方法
Dec 09 Javascript
jQuery Mobile页面返回不需要重新get
Apr 26 Javascript
js与applet相互调用的方法
Jun 22 Javascript
JS声明式函数与赋值式函数实例分析
Dec 13 Javascript
详解Element 指令clickoutside源码分析
Feb 15 Javascript
jQuery 判断元素是否存在然后按需加载内容的实现代码
Jan 16 jQuery
vue调用微信JSDK 扫一扫,相册等需要注意的事项
Jan 03 Vue.js
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中文件缓存转内存缓存的方法
2011/12/06 PHP
解析php中curl_multi的应用
2013/07/17 PHP
php短信接口代码
2016/05/13 PHP
PHP发送AT指令实例代码
2016/05/26 PHP
浅谈php和js中json的编码和解码
2016/10/24 PHP
php file_get_contents取文件中数组元素的方法
2017/04/01 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
Laravel框架基于ajax和layer.js实现无刷新删除功能示例
2019/01/17 PHP
php中的依赖注入实例详解
2019/08/14 PHP
IE8下关于querySelectorAll()的问题
2010/05/13 Javascript
Javascript模块化编程(一)AMD规范(规范使用模块)
2013/01/17 Javascript
Jquery:ajax实现翻页无刷新功能代码
2013/08/05 Javascript
JavaScript中的分号插入机制详细介绍
2015/02/11 Javascript
JavaScript的Backbone.js框架环境搭建及Hellow world示例
2016/05/07 Javascript
Bootstrap编写一个兼容主流浏览器的受众巨幕式风格页面
2016/07/01 Javascript
浅谈JavaScript的自动垃圾收集机制
2016/12/15 Javascript
详解vue 模版组件的三种用法
2017/07/21 Javascript
详解如何在React组件“外”使用父组件的Props
2018/01/12 Javascript
JavaScript偏函数与柯里化实例详解
2019/03/27 Javascript
自定义Vue中的v-module双向绑定的实现
2019/04/17 Javascript
微信小程序开发实现的选项卡(窗口顶部/底部TabBar)页面切换功能图文详解
2019/05/14 Javascript
vue使用i18n实现国际化的方法详解
2019/09/05 Javascript
NodeJS http模块用法示例【创建web服务器/客户端】
2019/11/05 NodeJs
js实现3D旋转相册
2020/08/02 Javascript
跟老齐学Python之编写类之一创建实例
2014/10/11 Python
Python使用Matplotlib模块时坐标轴标题中文及各种特殊符号显示方法
2018/05/04 Python
Python实现监控Nginx配置文件的不同并发送邮件报警功能示例
2019/02/26 Python
Python基于机器学习方法实现的电影推荐系统实例详解
2019/06/25 Python
Python换行与不换行的输出实例
2020/02/19 Python
new修饰符是起什么作用
2015/06/28 面试题
英语翻译系毕业生求职信
2013/09/29 职场文书
中专药剂专业应届毕的自我评价
2013/12/27 职场文书
成都人事代理协议书
2014/10/25 职场文书
2019自荐信范文集锦!
2019/07/03 职场文书
创业计划书之酒店
2019/08/30 职场文书
MySQL分库分表与分区的入门指南
2021/04/22 MySQL