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 ui resizable bug解决方法
Oct 26 Javascript
jquery mobile的触控点击事件会多次触发问题的解决方法
May 08 Javascript
Node.js实用代码段之获取Buffer对象字节长度
Mar 17 Javascript
谈一谈JS消息机制和事件机制的理解
Apr 14 Javascript
JS简单实现获取元素的封装操作示例
Apr 07 Javascript
javascript中json对象json数组json字符串互转及取值方法
Apr 19 Javascript
js获取一组日期中最近连续的天数
May 25 Javascript
基于JavaScript实现幸运抽奖页面
Jul 05 Javascript
JS使用遮罩实现点击某区域以外时弹窗的弹出与关闭功能示例
Jul 31 Javascript
详解如何用webpack4从零开始构建react开发环境
Jan 27 Javascript
javascript异步处理与Jquery deferred对象用法总结
Jun 04 jQuery
vue+element实现图片上传及裁剪功能
Jun 29 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
正义联盟的终局之战《天启星战争》将成为DC动画宇宙的最后一部
2020/04/09 欧美动漫
几个学习PHP的网址
2006/11/25 PHP
PHP使用内置函数生成图片的方法详解
2016/05/09 PHP
PHP 中TP5 Request 请求对象的实例详解
2017/07/31 PHP
搜索附近的人PHP实现代码
2018/02/11 PHP
PHP INT类型在内存中占字节详解
2019/07/20 PHP
window.onload和$(function(){})的区别介绍
2013/10/30 Javascript
js全屏显示显示代码的三种方法
2013/11/11 Javascript
Chrome扩展页面动态绑定JS事件提示错误
2014/02/11 Javascript
js中substring和substr的定义和用法
2014/05/05 Javascript
自定义百度分享的分享按钮
2015/03/18 Javascript
jQuery实现类似淘宝网图片放大效果的方法
2015/07/08 Javascript
javascript中递归的两种写法
2017/01/17 Javascript
jqGrid翻页时数据选中丢失问题的解决办法
2017/02/13 Javascript
vue组件的写法汇总
2018/04/12 Javascript
Node.js命令行/批处理中如何更改Linux用户密码浅析
2018/07/22 Javascript
vue-cli项目修改文件热重载失效的解决方法
2018/09/19 Javascript
JS实现图片懒加载(lazyload)过程详解
2020/04/02 Javascript
[02:44]DOTA2英雄基础教程 钢背兽
2013/12/19 DOTA
[06:43]DAC2018 4.5 SOLO赛 Maybe vs Paparazi
2018/04/06 DOTA
python类和函数中使用静态变量的方法
2015/05/09 Python
对比Python中__getattr__和 __getattribute__获取属性的用法
2016/06/21 Python
深入解析Python中的descriptor描述器的作用及用法
2016/06/27 Python
Python学习小技巧之列表项的拼接
2017/05/20 Python
Python 数值区间处理_对interval 库的快速入门详解
2018/11/16 Python
windows7 32、64位下python爬虫框架scrapy环境的搭建方法
2018/11/29 Python
Python 使用folium绘制leaflet地图的实现方法
2019/07/05 Python
python时间time模块处理大全
2020/10/25 Python
波兰最大的儿童服装连锁店之一:5.10.15.
2018/02/11 全球购物
中学教师岗位职责
2013/11/26 职场文书
服装行业创业计划书范文
2014/02/05 职场文书
高中运动会入场词
2014/02/14 职场文书
刑事起诉书范文
2015/05/19 职场文书
2015年初中教务处工作总结
2015/07/21 职场文书
SQLServer之常用函数总结详解
2021/08/30 SQL Server
Java tomcat手动配置servlet详解
2021/11/27 Java/Android