var arr = new Array();//存储数组
    var arrLength = 4; //数组长度
    var flag = 0; //当前长度
    while (flag < arrLength) {
        var r = Math.round(Math.random() * 100);
        if ( r == 0 || r == "") {continue; }
        if (arr.length == 0) {
            arr[0] = r;
        } else {
            var isExist = false;
            for (var n = 0; n < arr.length; n++) {
                if (arr[n] == r) {
                    isExist = true;
                    break;
                }
            }
            if (!isExist) {
                arr[arr.length] = r;
            }
        }
        flag++; 
    }    for (var i = 0; i < arr.length; i++) {
        document.write(arr[i]);
        document.write("\n\r");
    }这里是我写的一个随即生成不重复整数的脚本,请高手帮忙做下优化

解决方案 »

  1.   

    var arr=[];
    var l=4;
    var o={};
    while(true){
     var r = Math.round(Math.random() * 100); 
    if(!o[r]){
    arr.push(r);
    o[r]=1;
    if(arr.length==l){break;}
    }
    }alert(arr);
      

  2.   

    var arr=[];
    var l=4;
    var o={};
    while(true){
     var r = Math.round(Math.random() * 100); 
    if(!o[r]){
    arr.push(r);
    o[r]=1;
    if(arr.length==l){break;}
    }
    }alert(arr);
      

  3.   


    function createArray(len, maxNum) {
    var _arr = [];
    if(len && parseInt(maxNum)) {
    var _r, _o = {};
    while(_arr.length < len) {
    _r = Math.round(Math.random() * 100);
    if(_o[_r]) {
    continue;
    } else {
    _arr.push(_r);
    _o[_r] = true;
    }
    }
    }
    return _arr;
    }
    alert(createArray(4, 100));
      

  4.   


    function createRandArray(LEN,MAX) {
    if(MAX<=LEN) return [];//如果最大值超出数组长度则直接返回空数组
    var i=0;
    var arr = [];
    while(i<LEN) {
    var has = true;//标记是否存在重复值,初始设置为存在
    var a = '';
    while(has) {
    has = false;//此处设置为false,如果不设置 if(!has) break;会误判
    a = Math.round(Math.random()*(MAX-1)) + 1;//这里可以用Math.ceil或者其他
    for(var j=0;j<i;j++) {
    if(a==arr[j]) {//存在重复,则break转到while(has)执行
    has = true;
    break;
    }
    }
    if(!has) break;//没有发现重复,说明当次生成的是好的数
    }
    arr[i++] = a;//存入数组
    }
    return arr;
    }document.write(createRandArray(100,100));
      

  5.   

    勘误:if(MAX<=LEN) return [];//如果最大值小于数组长度则直接返回空数组
      

  6.   

    晕,上面的 if(MAX<=LEN) 改成 if(MAX<LEN)