kata

by Igor Cuckovic

JavaScript

const Calculator = function() {
  this.evaluate = string => {
    // do code here

    var tempArr = string.split(" ");
    
    if (tempArr.length === 1) {
    	return tempArr[0];
    }
    
    var  higherOrder = tempArr.reduce(function(acc, cur, i, array) {
    	var result;

      if (cur === "/") {
      	result = acc.concat([(+acc[acc.length - 1] || (+array[i - 1])) / (+array[i + 1])]);

        result.splice(result.length - 2, 1);
        return result;
      }
      
      if (cur === "*") {
      	result = acc.concat([(+acc[acc.length - 1] || (+array[i - 1])) * (+array[i + 1])]);

        result.splice(result.length - 2, 1);
        return result;
      }
      
      return array[i - 1] === "/" || array[i - 1] === "*" ? acc : acc.concat(cur);
      
    }, [])
    
    if (higherOrder.length === 1) {
    	return higherOrder[0];
    }
    
    var lowerOrder = higherOrder.reduce(function(acc, cur, i, array) {
    
      
      if (cur === "+") {
				return (acc || (+array[i - 1])) + (+array[i + 1]);
      }
      
      if (cur === "-") {
				return (acc || (+array[i - 1])) - (+array[i + 1]);
      }
      
      return acc;
    },0)
    
    
    return lowerOrder;
  }
};

var calculate = new Calculator()

console.log(calculate.evaluate('10 * 5 / 2'))