js從數組中隨機獲取n個不重復的數據


做雲課堂的作業時遇到一要求,實現刷新頁面時顯示不同數據,(數組中20個據,頁面加載10個)。思路就是從0-19中隨機生成10個不同的數,讓數組取下標輸出數據。

下面是在num的范圍內生成n個不重復的數。例如從10以內隨機生成5個不同的數randomNum(10,5);

function randomNum(num,n) {
if(typeof num!=="number"||typeof n!=="number") return false;  //對象檢測
  var aNum=[];          
  if (num<=n) {
    for (var j = 0; j < num; j++) {
      aNum.push(j);
    };                  
    return aNum;
  }         //如果n大於num就生成0到num-1的每一個數
    else{
      for (var i = 0; i < num; i++) {
         var random=Math.round(Math.random()*num); 
           if (aNum.indexOf(random)==-1) {
              aNum.push(random);
              if (aNum.length==n) {
                return aNum;
              };
           }
      }  
    }
}       //從0至num-1中隨機獲得n個不同的數的數組

上面這個有重大bug,謝謝評論區大神提醒,改進如下:
function randomNum(num,n) {
if(typeof num!=="number"||typeof n!=="number") return false;  //對象檢測
  var aNum=[];         
  if (num<=n) {
    for (var j = 0; j < num; j++) {
      aNum.push(j);
    };                 
    return aNum;
  }         //如果n大於num就生成0到num-1的每一個數
    else{
	  while(aNum.length<n){
		var random=Math.round(Math.random()*num);
		if (aNum.indexOf(random)==-1) {
		   aNum.push(random);
		}
	  }
	  return aNum;
    }
} 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM