我试图遍历15个字符串列表,并想将随机值绑定到另一个列表。

我还使用另一个列表来检查该随机数中的已用数字。
我在此递归循环和随机数中面临问题。为什么有时会创建未定义的值?

请在这方面帮助我,是的,我从上一天开始检查了所有其他选项,这不是重复或重复的问题。因此请在否决该问题之前检查以下代码。

Codepen在这里
    http://codepen.io/anon/pen/CaAfi

最佳答案

我认为问题在于此分支:

if (randnum == -1 || randnum == undefined) {
    randnum = CheckRandomNum(iconListLength, usedNumLst);
} else {
    usedIconList.push(iconList[randnum]);
    usedNumLst.push(randnum);
}


如果randnumundefined,则调用CheckRandomNum,但您继续循环(因此,在usedIconList中,有15个项目,而不是--j中的15个项目。如果更新逻辑以解决迭代问题,该代码不再产生未定义的项目。

这是更新的代码笔:http://codepen.io/anon/pen/qymsK

我唯一更改的是添加再次执行循环:

if (randnum == -1 || randnum == undefined) {
    --j;
    randnum = CheckRandomNum(iconListLength, usedNumLst);
} else {
    usedIconList.push(iconList[randnum]);
    usedNumLst.push(randnum);
}

10-01 10:28