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

时间:2016-09-22    点击:123   

一、常规算法

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

常用js,css文件统一加载方法(推荐) 并在加载之后调用回调函数
form表单转Json提交的方法(推荐)
关于验证码在IE中不刷新的快速解决方法
JS图片左右无缝隙滚动的实现(兼容IE,Firefox 遵循W3C标准)
JavaScript中三个等号和两个等号的区别(== 和 ===)浅析
> 返回     
地址:上海市普陀区胶州路941号长久商务中心 电话: QQ:
© Copyright 2012 上海网络 Product All Rights Reserved