javascript函数输出任意个数的范围数组

2017-12-21  本文已影响0人  瓜跑跑
示意图
//   生成一个区间范围内数值
function getRandom(start,end){
    if( typeof start === "number" && typeof end === "number"){
        return Math.ceil(Math.random()*(end-start)) + start 
    }else{
        throw new Error("arguments must be a number")
    }       
}

//    生成符合数量和区间范围的数组
function pick(num,start,end){
    if(typeof num === "number"){
        var result = []
        var arr = []
        var distance = end - start   // 区间值之间的差额数量

        !function innerPick(){        
            for(var i=0; i<num; i++){
                arr.push(getRandom(start,end))   // 执行生成区间值函数操作并添加给数组
            }            
            result = arr.filter(function(ele,index,self){
                return self.indexOf(ele) == index    //  去除重复的数组  导致数组数量可能会减少
            })            
            if(result.length < distance){    
                innerPick()    // 判断是否被去重操作  减少了数组数量为true就在递归一次  数组数量可能会超出规定
            }else{
                result.length = distance     //   如果递归后数组数量超出   则裁剪到靠后的多余数组并返回新数组
                return result   
            }
        }()
        return result    //  返回新数组
    }
    else{
        throw new Error("arguments must be a number")
    } 
}

var a = pick(10,10,20)

console.log(a)
上一篇下一篇

猜你喜欢

热点阅读