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];

配列スプライスは、配列からアイテムを追加または削除します。最初の引数は、操作するインデックスです。2 番目の引数は、そのインデックスから削除する要素の数です (配列に追加するだけの場合は 0)。追加の引数は、その場所の配列に追加するアイテムです。この場合、ランダム インデックスを指定し、1 つのアイテムを削除します。戻り値は、削除された要素の配列です。この場合、ファイル名から削除された 1 つの要素を含む配列です。

于 2013-02-09T07:27:53.223 に答える
0

それらを本当にランダムで本当にユニークにしたいですか?可能性しかありません。

重複がないように、すべてをデータベースに保存する必要があります。重複を生成する場合は、再生成するか、数値を増やして再試行する必要があります。これが探しているものである場合は、値を 1 から増やしてみることをお勧めします。

于 2013-02-09T07:22:39.670 に答える