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 相关文章推荐
读jQuery之十三 添加事件和删除事件的核心方法
Aug 23 Javascript
AngularJS入门教程(零):引导程序
Dec 06 Javascript
Web表单提交之disabled问题js解决方法
Jan 13 Javascript
JS实现鼠标点击展开或隐藏表格行的方法
Mar 03 Javascript
简介JavaScript中getUTCMonth()方法的使用
Jun 10 Javascript
JQuery.validate在ie8下不支持的快速解决方法
May 18 Javascript
深入理解JS函数的参数(arguments)的使用
May 28 Javascript
bootstrap PrintThis打印插件使用详解
Feb 20 Javascript
微信小程序实战之上拉(分页加载)效果(2)
Apr 17 Javascript
利用Javascript实现一套自定义事件机制
Dec 14 Javascript
vue ssr 指南详读
Jun 29 Javascript
7个好用的JavaScript技巧分享(译)
May 07 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/07/01 PHP
php设计模式之简单工厂模式详解
2014/09/04 PHP
PHP整合PayPal支付
2015/06/11 PHP
在WordPress中安装使用视频播放器插件Hana Flv Player
2016/01/04 PHP
javascript web对话框与弹出窗口
2009/02/22 Javascript
屏蔽Flash右键信息的js代码
2010/01/17 Javascript
jquery加载页面的方法(页面加载完成就执行)
2011/06/21 Javascript
读jQuery之十四 (触发事件核心方法)
2011/08/23 Javascript
js和php如何获取当前url的内容
2013/09/22 Javascript
使用js简单实现了tree树菜单
2013/11/20 Javascript
ExtJS4如何自动生成控制grid的列显示、隐藏的checkbox
2014/05/02 Javascript
简单实现限制uploadify上传个数
2015/11/16 Javascript
JavaScript的Number对象的toString()方法
2015/12/18 Javascript
JavaScript浏览器对象之一Window对象详解
2016/06/03 Javascript
jQuery实现响应鼠标事件的图片透明效果【附demo源码下载】
2016/06/16 Javascript
jquery checkbox的相关操作总结
2016/10/17 Javascript
Javascript基础回顾之(三) js面向对象
2017/01/31 Javascript
无法获取隐藏元素宽度和高度的解决方案
2017/03/07 Javascript
bootstrap fileinput实现文件上传功能
2017/08/23 Javascript
详解基于mpvue的小程序markdown适配解决方案
2018/05/08 Javascript
Vue实现简易翻页效果源码分享
2018/11/08 Javascript
小程序实现搜索界面 小程序实现推荐搜索列表效果
2019/05/18 Javascript
Layui表格监听行单双击事件讲解
2019/11/14 Javascript
原生小程序封装跑马灯效果
2020/10/21 Javascript
python实现决策树、随机森林的简单原理
2018/03/26 Python
python+selenium实现QQ邮箱自动发送功能
2019/01/23 Python
Python 通过打码平台实现验证码的实现
2019/05/13 Python
浅谈利用缓存来优化HTML5 Canvas程序的性能
2015/05/12 HTML / CSS
澳大利亚家庭花园和DIY工具网店:VidaXL
2019/05/03 全球购物
LUISAVIAROMA中国官网:时尚奢侈品牌购物网站
2020/11/01 全球购物
大客户销售经理职责
2013/12/04 职场文书
四风对照检查材料范文
2014/09/27 职场文书
代领报检证委托书范本
2014/10/11 职场文书
2016计划生育先进个人事迹材料
2016/02/29 职场文书
2019垃圾分类宣传口号汇总
2019/08/16 职场文书
Java实现超大Excel文件解析(XSSF,SXSSF,easyExcel)
2022/07/15 Java/Android