JSFiddle - React, Tailwind, and code Playground
HTML
<div id="out">
</div>
JavaScript
const calculator = {
'*': (a, b) => a * b,
}
function calculate (expression) {
const expressionCharacterArray = expression.split(' ')
.map(
expressionCharacter => !isNaN(parseFloat(expressionCharacter))
?
parseFloat(expressionCharacter)
:
expressionCharacter
);
const expressionResult = expressionCharacterArray
.reduce(
(accumulator, expressionCharacter) => {
if (calculator[expressionCharacter]) {
const secondOperand = accumulator.pop();
const firstOperand = accumulator.pop();
return calculator[expressionCharacter](firstOperand, secondOperand)
}
else {
return [...accumulator, expressionCharacter]
}
}
, []
);
return expressionResult.pop();
}
document.getElementById('out').innerHTML = numberToOrdinal(21)