0

我有这个功能可以为我一直在做的测验随机生成一个国家名称,但我不希望同一个名字出现多次。我怎么能那样做?这是我正在使用的代码。

<div style="float:left">
<h1> <span id="questionnum"></span>. Can you locate <span id="countryquestion"></span> on the map?</h1>
</div>


<script type="text/javascript">   

generateCountry();

function generateCountry(){

    filenames = [ "Albania", "Andorra", "Armenia", "Austria", "Azerbaijan", "Belarus", "Belgium", "Bosnia and Herzegovina", "Bulgaria", "Croatia", "Cyprus", "Czech Republic", "Denmark", "Estonia", "Finland", "France", "Georgia", "Germany", "Greece", "Hungary", "Iceland", "Ireland", "Italy", "Latvia", "Liechtenstein", "Lithuania", "Luxembourg", "Macedonia", "Malta", "Moldova", "Monaco", "Montenegro", "The Netherlands", "Norway", "Poland", "Portugal", "Romania", "Russia", "San Marino", "Serbia", "Slovakia", "Slovenia", "Spain", "Sweden", "Switzerland", "Ukraine", "United Kingdom" ];

    filename = filenames[Math.floor(Math.random()*filenames.length)];

    document.getElementById('countryquestion').textContent = filename;
    }

</script>
4

2 回答 2

2
filename = filenames.splice(Math.floor(Math.random()*filenames.length), 1);

document.getElementById('countryquestion').textContent = filename[0];

数组拼接将添加或删除数组中的项目。第一个参数是要使用的索引。第二个参数是从该索引中删除多少元素(如果只添加到数组中,则为 0)。任何其他参数都是要添加到该位置的数组的项目。在这种情况下,我们指定一个随机索引并删除一项。返回值是一个已删除元素的数组,在本例中是一个数组,其中包含从文件名中删除的一个元素。

于 2013-02-09T07:27:53.223 回答
0

您是否希望它们真正随机且真正独特?你只能有可能。

您必须将每一个都存储在数据库中以确保没有重复项。如果您生成副本,则需要重新生成或只是增加数字并重试。如果这是您要查找的内容,最好尝试从 1 开始递增该值。

于 2013-02-09T07:22:39.670 回答