JS 在指定數組中隨機取出N個不重復的數據


/*
*思路:每次隨機從數組抽出一個數放進新的數組,然后將這個數從原數組中剔除,這個就不會抽到重復的數了
*/
function
makeRandomArr(arrList,num){ if(num>arrList.length){ return; } // var tempArr=arrList.concat(); var tempArr=arrList.slice(0); var newArrList=[]; for(var i=0;i<num;i++){ var random=Math.floor(Math.random()*(tempArr.length-1)); var arr=tempArr[random]; tempArr.splice(random, 1); newArrList.push(arr); } return newArrList; }

說明:數組的賦值,例如直接將arr1賦值給arr2,那么改變arr2,arr1也會發生改變,因為他們的都指向一個內存容器。所以我為了不改變原數組,用了下面其中一個方法。

 var tempArr=arrList.concat(); //返回數組的拷貝數組,注意是一個新的數組,不是指向
 var tempArr=arrList.slice(0);//返回數組的拷貝數組,注意是一個新的數組,不是指向
栗子:
var testArr=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17];
var test=makeRandomArr(testArr,7);
console.log(test);//2,5,8,3,9,10,15
console.log(testArr);//1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17

 


免責聲明!

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



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