我正在學習JavaScript,我的一個挑戰是不使用eval()函數來製作一個計算器。到目前爲止,我做了輸入,輸入檢查等,我得到一個數組,看起來像有點像這樣numbers = ['-','1','+','2','*','3','+','(','5','/','2'comma','5',')','+','6'];
因爲我還在學習,所以我不知道該從哪裏走..我如何對這個字符串進行數學計算? (),*,/?中的計算優先級如何?我應該用什麼技術來解決這個問題?我不想找到準備好去回答,我想自己寫,我需要指導如何做到這一點:)從數組值和運算符計算
鏈接到我的當前代碼在JSFiddle。到目前爲止,我正在使用該字符串來顯示按下的按鍵。
var rezult = "0";
var numberJoin = [];
function skaicius(symbol) {
numberJoin.push(symbol);
secondTolast = numberJoin[numberJoin.length - 2];
lastNumber = numberJoin[numberJoin.length - 1];
symbolswithoutComma = numberJoin.toString();
atsakymas = symbolswithoutComma.replace(/,/g, "");
atsakymas = atsakymas.replace(/comma/g, ",");
if (numberJoin[0] === "x" || numberJoin[0] === "+") {
numberJoin = [];
} else if ((symbol === "x" || symbol === "+" || symbol === "-") && (secondTolast === "x" || secondTolast === "+" || secondTolast === "-")) {
numberJoin.splice(numberJoin.length - 2, numberJoin.length - 1);
numberJoin.push(symbol);
} else if (symbol === "delete") {
numberJoin = [];
rezult = "0";
document.getElementById("rezult").innerHTML = rezult;
} else if (symbol === "=") {
} else {
document.getElementById("rezult").innerHTML = atsakymas;
}
}
編輯:EVAL()之類的東西的新功能( '返回-1 + 2 * 3 +(5/2,5)6')()都有點作弊的和因爲我學習,我想嘗試解決這個問題,而不會作弊:)
你需要共享代碼的問題... –
工作小提琴:https://jsfiddle.net/arunpjohny/tmtLvfg8/29/ - 腳本在默認情況下加入到一個'onload'處理程序 –
謝謝你的意見並修復我的jsfiddle :) –