首页 > 编程 > JavaScript > 正文

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

2019-11-20 08:54:50
字体:
来源:转载
供稿:网友

一、常规算法

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表