簡體   English   中英

括號內的算術運算javascript

[英]Arithmetic operations inside the parenthesis javascript

嗨,請幫我解決這個問題

    var str = '10+20-10-2';
    var numbers = str.replace(/ /g, '').split(/[-+*\/]/g);
    var operators = str.replace(/ /g, '').split(/\d*/g);
    operators.shift();        
    var result = +numbers[0];        
    for (var i = 0; i < operators.length - 1; i++) {
        result = eval( result + operators[i] + numbers[i + 1] );
    }        
    alert(result)​;

上面的代碼工作正常,但是在嘗試傳遞其他輸入時,例如

 var str = '-(1)-(-2)';
    var str = '-1-(-1)';
    var str = '(-1)-2'  ; 

沒有任何結果

我想在您的情況下,除了評估外,您還可以使用

var result = parseFloat(numbers[0]);

因此

result = eval( result + operators[i] + parseFloat(numbers[i + 1]))

這更加可靠,因為僅當數字中的字符串真正包含數字時才有效,否則將返回NaN 另外,為了更加扎實,您可以走很長一段路,並使用switch指令:

switch(operators[i])
{
   case "+":
   etc.
}

當然,您的解決方案更加優雅,但是由於某種原因它無法正常工作,因此這可能會幫助您發現它。 在您中,我還將使用幾個alert()函數檢查這些拆分數組的實際內容。 有時,正則表達式無法產生預期的輸出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM