JSFiddle - React, Tailwind, and code Playground

by gartz

HTML

<div id="lol"></div>

JavaScript

var aik = {"id":50,"name":"AIK","description":"Hejja!","tasks":[{'foo':'bar'}], "n": null, "n2": "6", "nan": NaN, "mightBeNaN": false};
var dif = {"id":50,"name":"DjurgĂĄrden","description":"Hejja!","tasks":[{'foo':'zaz'}], "n": null, "n2": null, "nan": NaN, "mightBeNaN": NaN};

console.log(diff(aik, dif));

// ES6 implementation

function diff(obj1, obj2) {
    const result = {};
    if (Object.is(obj1, obj2)) {
   			return undefined;
    }
    if (!obj2 || typeof obj2 !== 'object') {
    		return obj2;
    }
    Object.keys(obj1 || {}).concat(Object.keys(obj2 || {})).forEach(key => {
        if(obj2[key] !== obj1[key] && !Object.is(obj1[key], obj2[key])) {
		        result[key] = obj2[key];
        }
        if(typeof obj2[key] === 'object' && typeof obj1[key] === 'object') {
        		const value = diff(obj1[key], obj2[key]);
            if (value !== undefined) {
            		result[key] = value;
            }
        }
    });
    return result;
}