Javascript從數(shù)組中隨機(jī)取出不同元素的兩種方法
一、常規(guī)算法
第一種方法較常規(guī),經(jīng)測試有bug,數(shù)據(jù)量大以后隨機(jī)幾次返回的對象直接是function而不是object。 當(dāng)然簡單數(shù)據(jù)類型應(yīng)該沒有這個問題。
示例代碼
/**
從數(shù)組中隨機(jī)抽取數(shù)據(jù) 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;
}
二、洗牌算法
第二種是使用洗牌算法,親測有效。
示例代碼
/**
隨機(jī)化原數(shù)組
**/
function shuffle(array) {
var m = array.length,
t, i;
// 如果還剩有元素…
while (m) {
// 隨機(jī)選取一個元素…
i = Math.floor(Math.random() * m--);
// 與當(dāng)前元素進(jìn)行交換
t = array[m];
array[m] = array[i];
array[i] = t;
}
return array;
}
//用法
var message = shuffle(totalArr);
message = message.slice(0, 3);
以上就是為大家總結(jié)的兩種Javascript從數(shù)組中隨機(jī)取出不同元素的方法,希望這篇文章能對大家的學(xué)習(xí)或者工作帶來一定的幫助,如果有疑問大家可以留言交流。
相關(guān)文章
JS實(shí)現(xiàn)的自定義顯示加載等待圖片插件(loading.gif)
這篇文章主要介紹了JS實(shí)現(xiàn)的自定義顯示加載等待圖片插件,涉及javascript針對圖片的動態(tài)加載實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06
查詢綁定數(shù)據(jù)島的表格中的文本并修改顯示方式的js代碼
查詢綁定數(shù)據(jù)島的表格中的文本并修改顯示方式的js代碼2009-12-12
JS實(shí)現(xiàn)點(diǎn)擊li標(biāo)簽彈出對應(yīng)的索引功能【案例】
這篇文章主要介紹了JS實(shí)現(xiàn)點(diǎn)擊li標(biāo)簽彈出對應(yīng)的索引功能,結(jié)合具體實(shí)例形式分析了javascript事件響應(yīng)、元素遍歷等相關(guān)操作技巧,需要的朋友可以參考下2019-02-02
js for循環(huán)倒序輸出數(shù)組元素的實(shí)例
下面小編就為大家?guī)硪黄猨s for循環(huán)倒序輸出數(shù)組元素的實(shí)例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03
動態(tài)加載圖片路徑 保持JavaScript控件的相對獨(dú)立性
根據(jù)新界面的要求,需要一部分圖片來增強(qiáng)日期控件的美觀性??紤]到既要實(shí)現(xiàn)加載圖表的目標(biāo),又要保持控件的獨(dú)立性以便將來的移植。2010-09-09

