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