码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2014-11-19 18:13:18      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:blog   io   ar   使用   sp   java   for   on   div   

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

 

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

标签:blog   io   ar   使用   sp   java   for   on   div   

原文地址:http://www.cnblogs.com/Travel/p/4108340.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!