思路:每次随机从数组抽出一个数放进新的数组,然后将这个数从原数组中剔除,这个就不会抽到重复的数了*
1 | function makeRandomArr(arrList,num){ |
说明:数组的赋值,例如直接将arr1赋值给arr2,那么改变arr2,arr1也会发生改变,因为他们的都指向一个内存容器。所以我为了不改变原数组,用了下面其中一个方法。1
2var tempArr=arrList.concat(); //返回数组的拷贝数组,注意是一个新的数组,不是指向
var tempArr=arrList.slice(0);//返回数组的拷贝数组,注意是一个新的数组,不是指向
栗子:1
2
3
4var 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
20160606更新:如果数组原本就存在重复数据,那么应该考虑先去重,后抽取数据的方法比较稳妥