code: function merge() {
    var destination = {};
    var sources = [].slice.call(arguments, 0);
    sources.forEach(function(source) {
      var prop;
      for (prop in source) {
        if (prop in destination && Array.isArray(destination[prop])) {
          // Overwrite Arrays
          destination[prop] = source[prop];
        } else if (prop in destination && typeof destination[prop] === "object") {
          // Merge Objects
          destination[prop] = merge(destination[prop], source[prop]);
        } else {
          // Set new values
          destination[prop] = source[prop];
        }
      }
    });
    return destination;
  }
docs: Returns new deeply merged JSON.  Eg. merge({a: {b: 1, c: 2}}, {a: {b: 3, d: 4}}) -> {a: {b: 3, c: 2, d: 4}}  Borrowed from cldrjs.