JSFiddle - React, Tailwind, and code Playground

by lchau

HTML

<textarea id="output" cols=100 rows=50></textarea>

JavaScript

/*
var output = document.querySelector('#output');

function print(obj) {
  var str = _.isString(obj) ? str : JSON.stringify(obj, null, 2);
  output.value += str + '\n\n';
}

_.mixin({
  merge: function() {
      return _.reduce(arguments, function(accumulator, object) {
        _.each(object, function(value, key) {
          if (!_.isUndefined(value)) {
          	accumulator[key] = value;  
          }
        });
        return accumulator;
    }, {});
  },
});


var obj = _.merge(
  { a: 1, b: 2, d: null}, 
  { c: undefined, e: null }, 
  { a: 3 }
);

console.log(obj);
*/

var filter = _.reject([
  1,
  undefined,
  "",
  null,
  0,
  NaN,
  false,
  true,
  -1,
  ['x'],
  [[undefined]], 
  {},
  { a: 1 },
  Infinity
], value => {
  switch (true) {
    default:
      throw new Error("nope");
      
    case _.isNull(value):
    case _.isUndefined(value):
      return true;

    case _.isNumber(value):
      return !_.isFinite(value);

	  case _.isBoolean(value):
      return false;
    
    case _.isArray(value):
      return _.isEmpty(_.flatten(value));
      
    case _.isString(value):
    case _.isObject(value):
      return _.isEmpty(value);
  }
});

console.log(filter);