Javascript从数组中随机取出不同元素的两种方法
一、常规算法
第一种方法较常规,经测试有bug,数据量大以后随机几次返回的对象直接是function而不是object。当然简单数据类型应该没有这个问题。
示例代码
/**
从数组中随机抽取数据2016-09-09
**/
functiongetArrItem(arr,num){
vartemp_array=newArray();
for(varindexinarr){
temp_array.push(arr[index]);
}
varreturn_array=newArray();
for(vari=0;i<num;i++){
if(temp_array.length>0){
vararrIndex=Math.floor(Math.random()*temp_array.length);
return_array[i]=temp_array[arrIndex];
temp_array.splice(arrIndex,1);
}else{
break;
}
}
returnreturn_array;
}
二、洗牌算法
第二种是使用洗牌算法,亲测有效。
示例代码
/**
随机化原数组
**/
functionshuffle(array){
varm=array.length,
t,i;
//如果还剩有元素…
while(m){
//随机选取一个元素…
i=Math.floor(Math.random()*m--);
//与当前元素进行交换
t=array[m];
array[m]=array[i];
array[i]=t;
}
returnarray;
}
//用法
varmessage=shuffle(totalArr);
message=message.slice(0,3);
以上就是为大家总结的两种Javascript从数组中随机取出不同元素的方法,希望这篇文章能对大家的学习或者工作带来一定的帮助,如果有疑问大家可以留言交流。