Javascript 为什么此代码跳过添加到列表对象?
这段代码将随机数添加到一个对象中,创建一个具有唯一id的项目列表。代码检查每个rnd,查看它是否已经在列表中 工作正常,但经过一段随机时间后,它将添加到计数器中,但跳过将项目添加到列表中 我是不是错过了什么 谢谢 JSFIDLE在这里:Javascript 为什么此代码跳过添加到列表对象?,javascript,arrays,javascript-objects,Javascript,Arrays,Javascript Objects,这段代码将随机数添加到一个对象中,创建一个具有唯一id的项目列表。代码检查每个rnd,查看它是否已经在列表中 工作正常,但经过一段随机时间后,它将添加到计数器中,但跳过将项目添加到列表中 我是不是错过了什么 谢谢 JSFIDLE在这里: 您的代码注定会失败-您无法从10000个可能性中生成11000个随机数所有lists键都是字符串,rnd都是数字。使用字符串(rnd)。编辑:实际上只需按照@Bravo下面所说的去做。顺便说一句,if(Object.keys(list.indexOf(rnd)>
您的代码注定会失败-您无法从10000个可能性中生成11000个随机数所有
list
s键都是字符串,rnd
都是数字。使用字符串(rnd)
。编辑:实际上只需按照@Bravo下面所说的去做。顺便说一句,if(Object.keys(list.indexOf(rnd)>=0)
如果你只需检查if(list[rnd])
@Mason,那么他就注定要失败,因为我的第一条评论:p@Bravo我现在太累了,想不起来了。我发现了错误,任务完成XD
console.log("Starting...");
var rnd = 0;
var list = {};
var count = 0;
var loop = setInterval(function() {
//Genereate rnd number and check if it is in the list
check1: while(true){
rnd = parseInt(Math.random()*10000);
if (Object.keys(list).indexOf(rnd)>=0){
console.log('dupe:'+count);
continue check1;
} else {
break check1;
}
}
//Add to list
list[rnd] = {
'a':count
};
//Add to counter
count++;
//Debug - Count not mactching list length
if (count != Object.keys(list).length) {
console.log(count + " : "+Object.keys(list).length);
clearInterval(loop);
}
//Stop at limit
if(count >= 11000) {
console.log('hit limit');
clearInterval(loop);
}
},50);