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