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从数组中随机取出不同元素的两种方法 的全部内容, 来源链接: utcz.com/z/325320.html

回到顶部