Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const solve = (expr) => {
- let leftPart;
- let rightPart;
- let operator = findFirstSign(expr)
- if(operator){
- let exprAsArray = expr.split(operator)
- let startIndex = expr.indexOf(operator)
- leftPart =Number(exprAsArray[0]
- .split('')
- .filter( el => el !== '(' && el !== ')')
- .join(''));
- rightPart = expr.slice(startIndex+1)
- if(!findFirstSign(rightPart)){
- rightPart = Number (rightPart.split('')
- .filter(el => el !== '(' && el !== ')')
- .join(''));
- switch(operator) {
- case '+':
- return leftPart + rightPart
- case '-':
- return leftPart - rightPart;
- case '*':
- return leftPart*rightPart;
- case '/':
- return leftPart/rightPart;
- }
- } else {
- switch(operator) {
- case '+':
- return leftPart + solve(rightPart)
- case '-':
- return leftPart - solve(rightPart);
- case '*':
- return leftPart*solve(rightPart);
- case '/':
- return leftPart/solve(rightPart);
- }
- }
- } else {
- return Number (expr.split('')
- .filter(el => el !== '(' && el !== ')')
- .join(''))
- }
- }
- const findFirstSign = (expr) => {
- const asArray = expr.split('');
- for(const el of asArray){
- if(el === '+' || el === '-' || el === '/' || el === '*') {
- return el
- }
- }
- }
- console.log(solve('45+(24*(12+3))'));
Advertisement
Add Comment
Please, Sign In to add comment