JSFiddle - React, Tailwind, and code Playground

by isochronous

HTML

<div id="expression">4 3 2 + -</div>
<div id="result"></div>

JavaScript

var evaluatePostfix = function(expr) {
    var parts = expr.split(' ');
    // need to read each part and detect whether or not it's an operator
    var i, partsLength, part, arg1, arg2, tmpResult, resArray = [];
    for (i = 0, partsLength = parts.length; i < partsLength; i++ ) {
        part = parts[i];
        if ( part === "+" || part === "-" ) {
            arg1 = resArray.pop();
            arg2 = resArray.pop();
            tmpResult = (part === "+") ? arg2 + arg1 : arg2 - arg1;
            console.log('part is an operator, using arguments %d and %d with operator %s, result is %d', arg2, arg1, part, tmpResult);
            resArray.push(tmpResult);
            console.log('pushing ', tmpResult);
        } else {
            console.log('part is a number, pushing %d', +part);
            resArray.push(+part);
        }
    }
    return resArray.pop();
};

var exp = $('#expression').text();
$('#result').text( evaluatePostfix(exp) );