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'))