Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.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 - Fatal编程技术网

如何使javascript函数不再返回与以前相同的值?

如何使javascript函数不再返回与以前相同的值?,javascript,Javascript,我正在为我正在处理的html页面使用javascript制作一个随机生成器,我已经能够制作一个函数,使用math.random从一个值数组中生成随机值(在我的例子中是pokemon名称,我正在生成随机pokemon,它已经添加到这个数组中)。这个函数链接到一个按钮,每次按下按钮,该功能就会运行,并生成一个新的口袋妖怪名称 但是,我正在努力使它每次生成一个完全不同的名称,有时我多次单击按钮,它只显示同一个口袋妖怪,我觉得它不是一个好的外观,因为它有时感觉坏了。我想知道是否有人可以看看我的代码并帮助

我正在为我正在处理的html页面使用javascript制作一个随机生成器,我已经能够制作一个函数,使用math.random从一个值数组中生成随机值(在我的例子中是pokemon名称,我正在生成随机pokemon,它已经添加到这个数组中)。这个函数链接到一个按钮,每次按下按钮,该功能就会运行,并生成一个新的口袋妖怪名称

但是,我正在努力使它每次生成一个完全不同的名称,有时我多次单击按钮,它只显示同一个口袋妖怪,我觉得它不是一个好的外观,因为它有时感觉坏了。我想知道是否有人可以看看我的代码并帮助我

var pokemonNames = ["charmander", "squirtle", "bulbasaur"];

function generateRandomPoke() {
    var randPoke = pokemonNames[Math.floor(Math.random() * (pokemonNames.length))];
    return randPoke;
}

$("#randomizebutton").click( function() {
    $("#pokemonname").html(generateRandomPoke);
});

正如@jabaa所说,您可以删除数组的元素,或者另一种选择是使用一个全局变量来存储已返回的名称。如果要返回的值位于全局变量上,则必须选择新名称。

获取索引并从数组中删除元素:

function generateRandomPoke() {
    var index = Math.floor(Math.random() * (pokemonNames.length))
    var randPoke = pokemonNames[index];
    pokemonNames.splice(index, 1);
    return randPoke;
}

您必须生成索引,直到它与前一个索引不匹配为止。请参见下面的代码

var index = 0;
 do{
Index = Math.floor(Math.random() * (pokemonNames.length));
} while(previous_index==index) 
    previous_index = index;
    var randPoke = pokemonNames[index];
    return randPoke;
}

从你的数组中移除返回的元素。听起来不错,但是我该怎么做呢?非常感谢巴杜齐!这正是我想要的,我甚至在语句的开头添加了一个if语句,告诉我数组何时为空。