Javascript 为什么此代码跳过添加到列表对象?

Javascript 为什么此代码跳过添加到列表对象?,javascript,arrays,javascript-objects,Javascript,Arrays,Javascript Objects,这段代码将随机数添加到一个对象中,创建一个具有唯一id的项目列表。代码检查每个rnd,查看它是否已经在列表中 工作正常,但经过一段随机时间后,它将添加到计数器中,但跳过将项目添加到列表中 我是不是错过了什么 谢谢 JSFIDLE在这里: 您的代码注定会失败-您无法从10000个可能性中生成11000个随机数所有lists键都是字符串,rnd都是数字。使用字符串(rnd)。编辑:实际上只需按照@Bravo下面所说的去做。顺便说一句,if(Object.keys(list.indexOf(rnd)>

这段代码将随机数添加到一个对象中,创建一个具有唯一id的项目列表。代码检查每个rnd,查看它是否已经在列表中

工作正常,但经过一段随机时间后,它将添加到计数器中,但跳过将项目添加到列表中

我是不是错过了什么

谢谢

JSFIDLE在这里:


您的代码注定会失败-您无法从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);