momo3141

string eval

Mar 13th, 2023
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const solve = (expr) => {
  2.    let leftPart;
  3.    let rightPart;
  4.   let operator = findFirstSign(expr)
  5.   if(operator){
  6.       let exprAsArray = expr.split(operator)
  7.       let startIndex = expr.indexOf(operator)
  8.       leftPart =Number(exprAsArray[0]
  9.                   .split('')
  10.                   .filter( el => el !== '(' && el !== ')')
  11.                   .join(''));
  12.       rightPart = expr.slice(startIndex+1)
  13.       if(!findFirstSign(rightPart)){
  14.          rightPart = Number (rightPart.split('')
  15.                               .filter(el => el !== '(' && el !== ')')
  16.                               .join(''));
  17.          switch(operator) {
  18.           case '+':
  19.            return leftPart + rightPart
  20.          case '-':
  21.            return leftPart - rightPart;
  22.          case '*':
  23.            return leftPart*rightPart;
  24.          case '/':
  25.            return leftPart/rightPart;
  26.             }
  27.  
  28.       } else {
  29.          
  30.          switch(operator) {
  31.           case '+':
  32.            return leftPart + solve(rightPart)
  33.          case '-':
  34.            return leftPart - solve(rightPart);
  35.          case '*':
  36.            return leftPart*solve(rightPart);
  37.          case '/':
  38.            return leftPart/solve(rightPart);
  39.             }
  40.  
  41.             }
  42.       } else {
  43.          return Number (expr.split('')
  44.                            .filter(el => el !== '(' && el !== ')')
  45.                            .join(''))
  46.       }
  47.  
  48. }
  49.  
  50. const findFirstSign = (expr) => {
  51.    const asArray = expr.split('');
  52.    for(const el of asArray){
  53.       if(el === '+' || el === '-' || el === '/' || el === '*') {
  54.          return el
  55.       }
  56.    }
  57. }
  58.  
  59. console.log(solve('45+(24*(12+3))'));
  60.  
Advertisement
Add Comment
Please, Sign In to add comment