我試圖構建一個隨機的JS單詞列表生成器,但我在這裏的代碼只生成一個單詞。實際上,我希望它能夠從之前給出的列表中生成30個單詞的列表,它可以是60個單詞列表或700個單詞,但結果應該總是30個,沒有重複的單詞,但我不知道如何實現這個目標。用JS生成隨機單詞列表
另外,我想觀衆介紹自己的單詞列表,然後點擊「生成字的新列表」,然後頁面會隨機給他們的30個字有不同的順序列表,他們每次點擊按鈕。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="language" content="english">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title></title>
<style type="text/css">
form {
float:left;
padding:20px 20px 10px;
border:1px solid #999;
}
label {
float:left;
width:100px;
line-height:22px;
margin-bottom:10px;
font-size:12px;
}
input {
margin-bottom:10px;
}
</style>
<script type="text/javascript">
function init(){
words0=['art','car','bus','earth','camera','phone','sun','light','number',];
df=document.forms[0];
df.reset();
df[1].onclick=function() {
rnd0=Math.floor(Math.random()*words0.length);
df[0].value=words0[rnd0];
}
}
window.addEventListener?
window.addEventListener('load',init,false):
window.attachEvent('onload',init);
</script>
</head>
<body>
<form action="#">
<div>
<label>word one:</label><input type="text" readonly="readonly"><br>
<input type="button" value="Click here to get random words">
<input type="reset" value="Clear">
</div>
</form>
</body>
</html>
順便說一句,更好地擺脫像'words0'或''rnd0'變量rnd1'名.. –
要從一個較大的集合中挑選n個隨機項目,[shuffle](https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle),然後取第一個'n'項目。 – Phylogenesis
然後你必須迭代,每次檢查新的隨機單詞是否不在你生成的單詞列表中,並且這樣做直到你有30個單詞。類似於:do var newWord = Math.floor(Math.random()* words0.length); if(wordsArr.indexOf(newWord)=== -1){wordsArr.push(newWord); counter ++;} } while(counter <30); – user2520818