首页 > 代码库 > 随机生成数组,并且去重复项

随机生成数组,并且去重复项

1:先随机生成一组数字,并插入数组中:

function randomArray(len, min, max) {    if( len > (max - min +1) ){throw new Error(‘len > (max - min +1)‘)} //检查所设定数组是否超出预定总数,如果是则抛出异常    var result = [];    for( var i = 0; i < len; i++){        var e = Math.floor(Math.random()*( max - min +1) + min);        result.push(e);    }    return result;}console.dir( randomArray(6, 2, 7) );

 

2:第一步当中已经随机生成一组数组,但数组里面的数字有可能是重复的,所以如果要做到数组里面的数字不重复出现,就得实现数组去重复项:

function check(result, e){    for( i = 0; i < result.length; i++){        if( result[i] == e){ //遍历数组,查看数组里面的数字是否与正在生成的e相同,如果是,则返回true;            return true;        }    }    return false;}

 

3:已经有检查数组中是否有重复项的方法了,但要把check函数在result.puse(e)前调用,所以完整代码如下:

function randomArray(len, min, max) {    if( len > (max - min +1) ){throw new Error(‘len > (max - min +1)‘)} //检查所设定数组是否超出预定总数,如果是则抛出异常    var result = [];    for( var i = 0; i < len; i++){        do{            var e = Math.floor(Math.random()*( max - min +1) + min);        } while( check(result, e) );        result.push(e);    }    return result;}function check(result, e){    for( i = 0; i < result.length; i++){        if( result[i] == e){    //遍历数组,查看数组里面的数字是否与正在生成的e相同,如果是,则返回true;            return true;        }    }    return false;}console.dir( randomArray(6, 2, 7) );

 

 

还有其它数组去重方法,把使用过的记录下来当做个备份:

1:用hasOwnProperty。

hasOwnProperty:是用来判断一个对象是否有你给出名称的属性或对象。不过需要注意的是,此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本身的一个成员。

function check(result, e) {    for (var i = 0; i < result.length; i++) {        if( result.hasOwnProperty(e) ) {            return true;        }    }    return false;}

 

随机生成数组,并且去重复项