gpt4 book ai didi

javascript - 从零重复的数组中随机生成名称?

转载 作者:行者123 更新时间:2023-11-28 01:07:04 25 4
gpt4 key购买 nike

更新:不同之处在于我不是在尝试制作一个列表,而是在尝试制作一个可以点击并生成随机名称的按钮

目标:单击一个按钮并从数组中随机生成一个名称。我正在尝试能够单击按钮并一次随机显示一个名称,没有重复的名称。到目前为止,我已经能够随机选择一个名称,但名称仍然重复。我如何更改我的代码以避免任何重复的名称?

 $( ".next").click(function() {
$(".intro").hide()
var people = ["Andrew", "Adam", "Seth", "Mattos", "Eric"];
for(i=0;i<1;i++){
var randomPosition = Math.floor(Math.random() * people.length);
var selected = people.splice(randomPosition,1);
console.log(selected)

$('#person').text(selected)


if ($('#person').text() === "Mattos"){
$("#selectedPerson").text("Mattos")
}
if ($('#person').text() === "Andrew"){
$("#selectedPerson").text("Andrew")
}
if ($('#person').text() === "Eric"){
$("#selectedPerson").text("Eric")
}

if ($('#person').text() === "Seth"){
$("#selectedPerson").text("Seth")
}
if ($('#person').text() === "Adam"){
$("#selectedPerson").text("Adam")
}
}
});

最佳答案

问题是每次输入函数时都在创建数组。所以从数组中拼接名字是没有效果的,因为下次你会重新填进去。您需要将数组初始化移出函数。

其他问题:splice() 返回一个数组,而不是单个元素,即使您只是从数组中拼接出 1 个元素。如果您只循环 1 次,则不需要 for() 循环。所有的 if 语句都是不需要的,因为您只是在所有情况下分配相同的字符串。

而且您应该检查名称用完的情况。

var people = ["Andrew", "Adam", "Seth", "Mattos", "Eric"];

$( ".next").click(function() {
$(".intro").hide();
if (people.length == 0) { // No names left to show
return;
}
var randomPosition = Math.floor(Math.random() * people.length);
var selected = people[randomPosition];
people.splice(randomPosition,1);
console.log(selected)

$('#person,#selectedPerson').text(selected);
});

关于javascript - 从零重复的数组中随机生成名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39280843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com