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