這是我在這裏的第一篇文章,我有麻煩的措辭問題,所以請忍受我,因爲我一直在這個問題上好幾個小時。Javascript隨機名Guesser:反應遲鈍的腳本問題
我的朋友和我已經想到了一個有趣的小函數,它應該猜測用戶的姓名(通過<input>
標籤),在一定的試驗中使用隨機數函數來訪問字母數組0中的字符串-25。該功能也應該爲用戶提供猜測其名稱的試驗次數。
我總是收到一個無響應的腳本(第33行 - 包含第二個「for循環」的行)。
var goal = document.getElementById("your_Name").value;
var alphabet = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"];
var goalArray = goal.split("");
var trials = 0;
var guessArray = new Array();
var i;
var n;
for (i = 0; i < goalArray.length; i++){
guessArray.push(alphabet[Math.floor(Math.random()*26)]);
}
while (goalArray != guessArray){
trials++;
guessArray = [];
for (n = 0; n < goalArray.length; n++){
guessArray.push(alphabet[Math.floor(Math.random()*26)]);
}
}
document.getElementById("appendomatic").innerHTML = "It took " + guessArray + " trials to guess correctly";
任何幫助或嘗試幫助將非常感激!
如果有人想知道:我們這個小想法是通過試驗來測試Javascript隨機函數的隨機性(他在MatLab中做了同樣的程序,所以我們將比較兩種語言的隨機函數的結果) 。
'goalArray!= guessArray'總是如此,因爲它們是兩個獨立的數組;即使它們包含相同的元素。 – Paulpro
您需要一個名爲深度比較的東西,幸運的是它不是昂貴的,因爲您的數組沒有非常複雜的結構。有一些圖書館可以幫助解決這個問題,比如'lodash'和'underscore' – woozyking
@woozyking或者因爲它們似乎只是'az'中單個字母的數組,你可以用'goalArray +'來比較它們! = guessArray',因爲數組的'toString()'會正確比較。 – Paulpro