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 innerHTML 的一些问题的解决方法
Jun 22 Javascript
JS获取整个页面文档的实现代码
Dec 15 Javascript
javascript中动态加载js文件多种解决办法总结
Nov 15 Javascript
js类型转换与引用类型详解(Boolean_Number_String)
Mar 07 Javascript
node.js中的fs.fchown方法使用说明
Dec 16 Javascript
JavaScript代码性能优化总结篇
May 15 Javascript
three.js中文文档学习之如何本地运行详解
Nov 20 Javascript
jQuery pjax 应用简单示例
Sep 20 jQuery
微信小程序实现笑脸评分功能
Nov 03 Javascript
如何使用puppet替换文件中的string
Dec 06 Javascript
超简单的微信小程序轮播图
Nov 22 Javascript
uni-app 支持多端第三方地图定位的方法
Jan 03 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打开和关闭文件操作函数总结
2014/11/18 PHP
解决ThinkPHP关闭调试模式时报错的问题汇总
2015/04/22 PHP
PHP解密Unicode及Escape加密字符串
2015/05/17 PHP
PHP pear安装配置教程
2016/05/14 PHP
php实现微信原生支付(扫码支付)功能
2018/05/30 PHP
PHP使用Http Post请求发送Json对象数据代码解析
2020/07/16 PHP
项目实践之javascript技巧
2007/12/06 Javascript
9个javascript语法高亮插件 推荐
2009/07/18 Javascript
28个JS验证函数收集
2010/03/02 Javascript
jQuery动画animate方法使用介绍
2013/05/06 Javascript
javascript中的parseInt和parseFloat区别
2013/07/12 Javascript
JavaScript中实现最高效的数组乱序方法
2014/10/11 Javascript
js实现宇宙星空背景效果的方法
2015/03/03 Javascript
基于JS实现省市联动效果代码分享
2016/06/06 Javascript
jQuery事件绑定用法详解
2016/09/08 Javascript
基于JS+Canves实现点击按钮水波纹效果
2016/09/15 Javascript
Bootstrap企业网站实战项目4
2016/10/14 Javascript
在vue中添加Echarts图表的基本使用教程
2017/11/22 Javascript
开发Vue树形组件的示例代码
2017/12/21 Javascript
每个 JavaScript 工程师都应懂的33个概念
2018/10/22 Javascript
vue路由中前进后退的一些事儿
2019/05/18 Javascript
Python批量重命名同一文件夹下文件的方法
2015/05/25 Python
Python中关于Sequence切片的下标问题详解
2017/06/15 Python
python中Apriori算法实现讲解
2017/12/10 Python
Selenium chrome配置代理Python版的方法
2018/11/29 Python
浅谈pytorch、cuda、python的版本对齐问题
2020/01/15 Python
DJI美国:消费类无人机领域的领导者
2018/04/27 全球购物
酒店管理专业学生求职信
2013/09/27 职场文书
军训心得体会
2013/12/31 职场文书
四风自我剖析材料
2014/09/30 职场文书
见习报告格式范文
2014/11/08 职场文书
2014年销售助理工作总结
2014/12/01 职场文书
搞笑婚前保证书
2015/02/28 职场文书
付款证明格式范文
2015/06/19 职场文书
聘任协议书(挂靠)
2015/09/21 职场文书
使用pandas生成/读取csv文件的方法实例
2021/07/09 Python