代替 :
var sideOne = parseInt(newLigning[0],10);
你可能想要这样的东西:
var sideOne = performMath(newLining[0],10);
在哪里 :
function performMath(equation) {
//CODE HERE
}
performMath
可以通过几种方式完成。您需要拆分方程并获得 2 之间的数字和方程。这可以递归完成!
我认为这可能是一个很好的起点。
编辑
对于这个问题,如果您开始考虑操作优先级 (PEDMAS),这将是一项稍微困难的任务。方法是相同的,performMath
需要稍微复杂一些。在这种情况下,我会为数字推荐某种数组结构,为方程推荐另一种数组结构。
编辑 2
Paul S
在开始之前对字符串进行消毒也是一个很好的点。您不能假设有人会输入方程式。Rich Cook 在编程时说:
“今天的编程是软件工程师努力构建更大更好的防白痴程序与宇宙试图产生更大更好的白痴之间的竞赛。到目前为止,宇宙正在获胜。”
编辑 3
这个小代码片段应该有点帮助......无论如何这可能不是最有效的代码......
var equation = "1+22-3";
var operators = "+-*\/"
var currentNumber = "";
var numbers = new Array();
var operatorArray = new Array();
for(var i=0; i<equation.length; i++) {
var currentChar = equation.charAt(i);
if(operators.indexOf(currentChar) != -1) {
operatorArray[operatorArray.length] = (currentChar);
numbers[numbers.length] = (currentNumber);
currentNumber = "";
} else {
currentNumber = currentNumber + currentChar;
alert(currentNumber);
}
}
numbers[numbers.length] = currentNumber;
alert("numbers : " + numbers);
alert("operators : " + operatorArray);
现在您所要做的就是遍历数组并执行正确的操作。