随机抽取不重复的数组元素

测试代码:

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;
        }

猜你喜欢

转载自www.cnblogs.com/justSmile2/p/10197327.html
今日推荐