js随机点名,如何实现不重名问题
时间: 2023-11-29 07:02:46 浏览: 55
实现js随机点名并避免重复名字的方法可以是在随机点名之前先对已经被点过的名字进行记录,然后在随机点名的时候先判断该名字是否已经被点过。具体实现可以使用一个数组来存储已经被点过的名字,当进行随机点名时,先生成一个随机的索引值,然后判断这个索引对应的名字是否已经在数组中出现过,如果已经出现过,则重新生成一个随机索引值,直到对应的名字没有重复为止。
另一种方式是在名字列表中将被点过的名字删除,然后再对新的名字列表进行随机点名。随机点名后,将被点中的名字从名字列表中移除,再次点名时就不会出现重名的情况。
除此之外,还可以使用对象的key-value存储方式,将名字作为key,已经被点中的名字对应的value设为true。进行随机点名时,先随机生成一个名字,然后判断这个名字在对象中对应的value是否为true,如果是,则重新生成一个名字,直到找到一个没有被点中过的名字为止。
总之,通过记录被点过的名字并进行判断,可以很好地避免js随机点名出现重名的问题。
相关问题
JavaScript实现随机点名
可以使用Math.random()函数生成随机数,再将随机数与学生名单长度相乘得到对应的下标,从而随机选取一个学生。具体实现可以参考以下代码:
```javascript
// 学生名单
var students = ["小明", "小红", "小刚", "小美", "小华"];
// 生成随机下标
var index = Math.floor(Math.random() * students.length);
// 输出随机选中的学生名字
console.log("本次点名选中的学生是:" + students[index]);
```
js 生成不重复随机点名
可以通过以下代码生成不重复的随机数:
```javascript
let arr = ["张三", "李四", "王五", "赵六", "钱七"];
let usedIndex = [];
for(let i = 0; i < arr.length; i++) {
let randomIndex = Math.floor(Math.random() * arr.length);
while(usedIndex.includes(randomIndex)) { // 如果已经使用过该随机数,则继续生成随机数,直到未使用过为止
randomIndex = Math.floor(Math.random() * arr.length);
}
usedIndex.push(randomIndex);
console.log(arr[randomIndex]); // 输出随机点名结果
}
```
该代码将给定的姓名列表存储在数组 `arr` 中,然后通过循环生成随机数,确保每个姓名只会被随机选中一次。