测试代码:
var arr0 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
var ranNum0 = 5;
console.log(getDiffArr(arr0, ranNum0));
方法实现:
1. 不断缩减原数组,一次抽一个
function getDiffArr(arr, num) { var arrOut = []; for (var i = 0; i < num; i++) { var ran = Math.floor(Math.random() * arr.length); arrOut.push(arr[ran]); arr = (function (arr, ran) { var arrOut = []; for (var m = 0, n = arr.length; m < n; m++) { if (arr[m] != arr[ran]) { arrOut.push(arr[m]); } } return arrOut; }(arr, ran)); } return arrOut; }
2.从抽第二个起,新数组元素遍历比较当前随机元素,若抽到相同的则重抽
function getDiffArr(arr, num) { var arrOut = []; var ran; for (var i = 0; i < num; i++) { ran = Math.floor(Math.random() * arr.length); // arrOut.push(arr[ran]); // error arrOut[i]=arr[ran]; if (i > 0) { for (var m = 0; m < i; m++) { if (arrOut[m] == arr[ran]) { i--; break; } } } } return arrOut; }