Javascript从数组中随机取出不同元素的两种方法

 更新时间:2016年09月22日 14:45:35   作者:garfieldzf  
这篇文章给大家分享了两种Javascript从数组中随机取出不同元素的方法,大家可以都学习学习,这样更能有助于大家的学习和理解,下面来一起看看吧

一、常规算法

第一种方法较常规,经测试有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从数组中随机取出不同元素的方法,希望这篇文章能对大家的学习或者工作带来一定的帮助,如果有疑问大家可以留言交流。

相关文章

  • 利用vscode调试编译后的js代码详解

    利用vscode调试编译后的js代码详解

    看了网上好多在vscode上调试javascript的代码,总是出现问题,索性自己写一个,下面这篇文章主要给大家介绍了关于如何利用vscode调试编译后的js代码的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们一起来看看吧
    2018-05-05
  • JavaScript操作CSS的高级用法分享

    JavaScript操作CSS的高级用法分享

    Web开发中,JavaScript与CSS的结合用于增强网页的交互性和用户体验,本文将探索几种高级方法来使用JavaScript操作CSS,并分别通过代码示例进行讲解,希望对大家有所帮助
    2023-12-12
  • 微信小程序实现滑动侧边栏

    微信小程序实现滑动侧边栏

    这篇文章主要为大家详细介绍了微信小程序实现滑动侧边栏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • JS实现的自定义显示加载等待图片插件(loading.gif)

    JS实现的自定义显示加载等待图片插件(loading.gif)

    这篇文章主要介绍了JS实现的自定义显示加载等待图片插件,涉及javascript针对图片的动态加载实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2016-06-06
  • javascript中如何处理引号编码&#034;

    javascript中如何处理引号编码&#034;

    本文为大家介绍下javascript中如何处理引号编码,具体如下,感兴趣的朋友可以参考下
    2013-08-08
  • 查询绑定数据岛的表格中的文本并修改显示方式的js代码

    查询绑定数据岛的表格中的文本并修改显示方式的js代码

    查询绑定数据岛的表格中的文本并修改显示方式的js代码
    2009-12-12
  • JS实现点击li标签弹出对应的索引功能【案例】

    JS实现点击li标签弹出对应的索引功能【案例】

    这篇文章主要介绍了JS实现点击li标签弹出对应的索引功能,结合具体实例形式分析了javascript事件响应、元素遍历等相关操作技巧,需要的朋友可以参考下
    2019-02-02
  • Nginx上传文件全部缓存解决方案

    Nginx上传文件全部缓存解决方案

    Nginx默认会对上传的文件先在本地进行缓存,再转发到应用服务器。请问怎么禁止掉这个缓存,让Nginx只转发而不缓存文件?本文给大家详细介绍Nginx上传文件全部缓存解决方案,有需要的朋友来参考下
    2015-08-08
  • js for循环倒序输出数组元素的实例

    js for循环倒序输出数组元素的实例

    下面小编就为大家带来一篇js for循环倒序输出数组元素的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • 动态加载图片路径 保持JavaScript控件的相对独立性

    动态加载图片路径 保持JavaScript控件的相对独立性

    根据新界面的要求,需要一部分图片来增强日期控件的美观性。考虑到既要实现加载图表的目标,又要保持控件的独立性以便将来的移植。
    2010-09-09

最新评论