js簡易計算機底層運算邏輯

來源:互聯網
上載者:User

標籤:i++   try   log   parse   運算   als   計算機   index   ring   

var Calc={getData:function(arr){var tempStr = "";var data = [];//格式化資料for(var i = 0; i < arr.length; i++){if(Number(arr[i])|| Number(arr[i]) == 0){tempStr += arr[i]}else{if(tempStr != ‘‘){data.push(tempStr);}data.push(arr[i]);tempStr = ‘‘;}}if(tempStr != ‘‘){data.push(tempStr);tempStr = ‘‘;}//去掉0開頭for(var i = 0; i < data.length; i++){if(Number(data[i])|| Number(data[i]) == 0){data[i] = Number(data[i])}}if(data[data.length-1] == "="){var result = Calc.calute(data);data.push(result);}Calc.show(data);},show:function(arr){console.log(arr.join(""));},calute:function(arr){var newArr = JSON.parse(JSON.stringify(arr));//根號while(newArr.indexOf(‘sqrt‘) != -1){var index = newArr.indexOf(‘sqrt‘);var num1 = newArr[index+1];var result = Math.sqrt(num1);newArr.splice(index,2,result);}//計算除法while(newArr.indexOf(‘/‘) != -1){var index = newArr.indexOf(‘/‘);var num1 = newArr[index-1];var num2 = newArr[index+1];var result = num1/num2;newArr.splice(index-1,3,result);}//乘法while(newArr.indexOf(‘*‘) != -1){var index = newArr.indexOf(‘*‘);var num1 = newArr[index-1];var num2 = newArr[index+1];var result = num1*num2;newArr.splice(index-1,3,result);}//減法while(newArr.indexOf(‘-‘) != -1){var index = newArr.indexOf(‘-‘);var num1 = newArr[index-1];var num2 = newArr[index+1];var result = num1-num2;newArr.splice(index-1,3,result);}//加法while(newArr.indexOf(‘+‘) != -1){var index = newArr.indexOf(‘+‘);var num1 = newArr[index-1];var num2 = newArr[index+1];var result = num1+num2;newArr.splice(index-1,3,result);}try{if(newArr.length > 2){throw new Error("計算錯誤");}}catch(e){console.log(e);console.log(newArr);return "運算式錯誤";}return newArr[0];}}var arr = ["0","2","0","+","3","+", "sqrt","4","-","8","="];Calc.getData(arr);//type: 1:空, 2:數字, 3:運算子, 4:等於function vaild(oldType,type){var flag = false;//type == 2時if((oldType == 1 && type == 2)||(oldType == 2 && type == 2) || (oldType == 3 && type == 2)){return true;}//type == 3if(oldType == 2 && type == 3){flag = true;}//type == 4if(oldType == 2 && type == 4){flag = true;}return flag;}

  

js簡易計算機底層運算邏輯

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.