从Array中随机生成名称,零重复?

时间:2016-09-01 21:04:14

标签: javascript jquery html arrays random

更新:区别在于我没有尝试制作一个列表我试图制作一个可以点击的按钮并生成随机名称

目标:单击按钮并从阵列中随机生成名称。我试图能够单击按钮并一次随机显示一个名称,没有重复的名称。到目前为止,我已经能够随机选择一个名称,但名称仍然重复。我怎么能改变我的代码以避免重复的名字?

 $( ".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")
    }
    }
    });

1 个答案:

答案 0 :(得分:1)

问题是每次进入该功能时都要创建数组。因此,将名称拼接到数组之外没有任何效果,因为您将在下次重新填充它。您需要将数组初始化移出函数。

其他问题:splice()返回一个数组,而不是单个元素,即使您只是从数组中拼接出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);
});