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");
}这里是我写的一个随即生成不重复整数的脚本,请高手帮忙做下优化
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);
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);
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));
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));