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 相关文章推荐
File文件控件,选中文件(图片,flash,视频)即立即预览显示
Apr 09 Javascript
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(下:动画篇)
Mar 24 Javascript
只需20行代码就可以写出CSS覆盖率测试脚本
Apr 24 Javascript
简单易用的倒计时js代码
Aug 04 Javascript
javascript的列表切换【实现代码】
May 03 Javascript
辨析JavaScript中的Undefined类型与null类型
May 26 Javascript
JS阻止事件冒泡行为和闭包的方法
Jun 16 Javascript
jQuery实现可以编辑的表格实例详解【附demo源码下载】
Jul 09 Javascript
纯JS打造网页中checkbox和radio的美化效果
Oct 13 Javascript
jQuery内存泄露解决办法
Dec 13 Javascript
JS实现线性表的链式表示方法示例【经典数据结构】
Apr 11 Javascript
react学习笔记之state以及setState的使用
Dec 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 utf-8编码问题,utf8编码,数据库乱码,页面显示输出乱码
2013/04/08 PHP
PHP实现定时执行任务的方法
2014/10/05 PHP
php将图片保存入mysql数据库失败的解决方法
2014/12/27 PHP
PHP简单实现防止SQL注入的方法
2018/03/13 PHP
PHP与SQL语句写一句话木马总结
2019/10/11 PHP
用js实现控制内容的向上向下滚动效果
2007/06/26 Javascript
符合标准的js表单提交的代码
2007/09/13 Javascript
北京奥运官方网站幻灯切换效果flash版打包下载
2008/01/30 Javascript
js 上传图片预览问题
2010/12/06 Javascript
JS代码同步文本框内容的实例方法
2013/07/12 Javascript
解析javascript中鼠标滚轮事件
2015/05/26 Javascript
AngularJS 遇到的小坑与技巧小结
2016/06/07 Javascript
js判断浏览器是否支持严格模式的方法
2016/10/04 Javascript
Angular和百度地图的结合实例代码
2016/10/19 Javascript
JavaScript实现翻页功能(附效果图)
2017/02/16 Javascript
使用Bootstrap + Vue.js实现添加删除数据示例
2017/02/27 Javascript
详解JavaScript数组过滤相同元素的5种方法
2017/05/23 Javascript
20个最常见的jQuery面试问题及答案
2018/05/23 jQuery
JS实现判断图片是否加载完成的方法分析
2018/07/31 Javascript
vuejs选中当前样式active的实例
2018/08/22 Javascript
Vue+elementui 实现复杂表头和动态增加列的二维表格功能
2019/09/23 Javascript
Python列表append和+的区别浅析
2015/02/02 Python
python 根据pid杀死相应进程的方法
2017/01/16 Python
django 通过ajax完成邮箱用户注册、激活账号的方法
2018/04/17 Python
利用Anaconda简单安装scrapy框架的方法
2018/06/13 Python
python使用Paramiko模块实现远程文件拷贝
2019/04/30 Python
python使用PIL剪切和拼接图片
2020/03/23 Python
Python基于pandas爬取网页表格数据
2020/05/11 Python
餐饮商业计划书范文
2014/04/29 职场文书
公司捐款倡议书
2014/05/14 职场文书
企业开业庆典答谢词
2015/01/20 职场文书
加薪通知
2015/04/25 职场文书
反邪教学习心得体会
2016/01/15 职场文书
JavaScript小技巧带你提升你的代码技能
2021/09/15 Javascript
Android Flutter实现3D动画效果示例详解
2022/04/07 Java/Android
python如何为list实现find方法
2022/05/30 Python