我需要生成唯一的数字,用字母连接它,然后推到数组中。
arr = []
for (var i = 0; i < 5; i++) {
function generateRandomNumber(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min);
}
var randomNum = generateRandomNumber(1, 15);
if (!arr.includes(randomNum)) {
arr.push('B' + randomNum.toString())
} else {
if (arr.length < 5) {
return generateRandomNumber(min, max)
} else break
}
}
我已经设置了唯一性检查,但是仍然会出现相同的值。
2条答案
按热度按时间y1aodyip1#
我已经设置了唯一性检查,但是仍然会出现相同的值。
唯一性检查不正确
当唯一性检查搜索数字时,数组只包含以字母
'B'
开头的字符串(由行arr.push('B' + randomNum.toString())
添加)。调用
arr.includes(randomNum)
总是返回false
,randomNum
的每个生成值都以'B'
为前缀,并被推送到数组中,无论数组包含什么。尝试一种更简单的方法:生成数字,如果它们还没有出现,则将它们添加到列表中,当列表足够大时停止(五个项目)。
然后遍历列表,并为每个项添加前缀
'B'
。就像这样:
sg24os4d2#
条件在循环中只检查一次。另外,如果条件处于else状态,则有可能出现与之前相同的编号。您可以使用此方法