一、常規算法
第一種方法較常規,經測試有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從數組中隨機取出不同元素的方法,希望這篇文章能對大家的學習或者工作帶來一定的幫助,如果有疑問大家可以留言交流。