Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从零重复的数组中随机生成名称?_Javascript_Jquery_Html_Arrays_Random - Fatal编程技术网

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

Javascript 从零重复的数组中随机生成名称?,javascript,jquery,html,arrays,random,Javascript,Jquery,Html,Arrays,Random,更新:不同的是,我不是在尝试制作一个列表,我是在尝试制作一个可以点击并生成随机名称的按钮 目标:单击一个按钮并从数组中随机生成一个名称。我试图能够点击按钮,一次随机显示一个名字,没有重复的名字。到目前为止,我已经能够随机选择一个名称,但名称仍然重复。如何更改代码以避免任何重复的名称 $( ".next").click(function() { $(".intro").hide() var people = ["Andrew", "Adam", "Seth", "Mattos

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

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

 $( ".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")
    }
    }
    });
$(“.next”)。单击(函数(){
$(“.intro”).hide()
var people=[“安德鲁”、“亚当”、“赛斯”、“马托斯”、“埃里克”];

对于(i=0;i而言,问题在于每次进入函数时都要创建数组。因此,从数组中剪切名称没有任何效果,因为下次将重新填充。需要将数组初始化移出函数

其他问题:
splice()
返回一个数组,而不是单个元素,即使您仅从数组中拼接出一个元素。如果您仅循环一次,则不需要
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);
});

为什么
if
s?为什么不使用相同的
selected
var来设置
#selectedPerson
字段的
text()
?可能会重复尝试使用按钮而不是创建列表。这与什么不同?为什么为()
只执行一次的循环?非常有用,非常有帮助。答案非常完美。感谢您抽出时间!