JSFiddle - React, Tailwind, and code Playground
by Abhisek DasGupta
HTML
<div id="result"></div>
JavaScript
(function() {
'use strict';
var calculator = {
plus: function() {
return this.calculate(arguments, "+");
},
minus: function() {
return this.calculate(arguments, "-");
},
multiply: function() {
return this.calculate(arguments, "*");
},
divide: function() {
return this.calculate(arguments, "/");
},
calculate: function(args, sign) {
var args = [].slice.call(args);
var len = args.length;
var result = args.reduce(function(result, curVal) {
var calcs = result.calcs;
if (sign === "+") {
calcs = calcs + curVal;
} else if (sign === "-") {
calcs = calcs ? calcs - curVal : curVal;
} else if (sign === "*") {
calcs = calcs ? calcs * curVal : curVal;
} else if (sign === "/") {
calcs = calcs ? calcs / curVal : curVal;
}
result.calcs = calcs;
result.outputFormat += result.outputFormat ? sign + curVal : curVal;
return result;
}, {
outputFormat: '',
calcs: 0
});
var res = ("'" + result.outputFormat + "=" + result.calcs + "'");
var resElem = document.createElement('div');
resElem.innerHTML = res;
document
.getElementById('result').appendChild(resElem);
return this;
}
}
window.calculator = calculator;
}());
calculator.plus(2, 2).minus(5, 10).multiply(4, 4).plus(2, 3, 3, 4).divide(8, 2);