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