JSFiddle - React, Tailwind, and code Playground

by LuckyCat

JavaScript

function extend(obj1, obj2) {

    /*for (var key in obj2) {
        if( (obj1.hasOwnProperty(key) 
          && obj1[key] != obj2[key]) 
          || !obj1.hasOwnProperty(key)){
          
            obj1[key] = obj2[key];
        }
    }*/
    var obj = {};
    for (var key in obj2) {
        obj1[key] = obj2[key];
    }
     
    console.log(obj1);
    
    return obj;

}
/*
function createObject(arrOfKeys, arrOfData) {
    var obj = {};
    
    for (var i=0; i < arrOfKeys.length; i++) {
        for (var j=0; j < arrOfData.length; j++) {
            obj[arrOfKeys[i]] = arrOfData[i];
        }
    }
    
    return obj;
}*/

/*console.log(createObject(['foo'], ['bar'])); 
console.log(createObject(['foo', 'extra'], ['bar'])); 
console.log(createObject(['foo'], ['1', null, 'baz']));*/

function MergeRecursive(obj1, obj2) {

  for (var p in obj2) {
    try {
      // Property in destination object set; update its value.
      if ( obj2[p].constructor==Object ) {
        obj1[p] = MergeRecursive(obj1[p], obj2[p]);

      } else {
        obj1[p] = obj2[p];

      }

    } catch(e) {
      // Property in destination object not set; create it and set its value.
      obj1[p] = obj2[p];

    }
  }
    console.log(obj1);
  return obj1;
}

extend({foo: 'bar', baz: 1}, {foo: true, zoop: 0}); // {foo: true, baz: 1, zoop: 0}

MergeRecursive({foo: 'bar', baz: 1}, {foo: true, zoop: 0});