JSON Compare - lodash
by Kesavamoorthi Subramanian
HTML
<script src="https://cdn.jsdelivr.net/npm/[email protected]/lodash.min.js"></script>
<h3 id="result"></h3>
JavaScript
function isEqual (obj1, obj2)
{
for (let key in obj1)
{
if (Array.isArray(obj1[key]) === true)
{
if (Array.isArray(obj2[key]) === false)
{
return false;
}
if (_.differenceWith(obj1[key], obj2[key], _.isEqual).length > 0)
{
return false;
}
}
}
if (_.isEqual(obj1, obj2) === false)
{
return false;
}
return true;
}
var isArrayEqual = function (obj1, obj2)
{
if (Array.isArray(obj1) === true && Array.isArray(obj2) === true)
{
if (_.differenceWith(obj1, obj2, _.isEqual).length === 0)
{
return true;
}
}
}
function isEqual2 (oldDataBlock, newDataBlock)
{
if (typeof (oldDataBlock) !== typeof (newDataBlock))
{
return false;
}
if (typeof (oldDataBlock) !== 'object')
{
return oldDataBlock === newDataBlock;
}
if (Object.keys(oldDataBlock).length !== Object.keys(newDataBlock).length)
{
return false;
}
for (let key in oldDataBlock)
{
if (oldDataBlock.hasOwnProperty(key) !== newDataBlock.hasOwnProperty(key))
{
return false;
}
if (typeof (oldDataBlock[key]) !== typeof (newDataBlock[key]))
{
return false;
}
switch (typeof (oldDataBlock[key]))
{
case 'object':
if (Array.isArray(oldDataBlock[key]) === false)
{
if (isEqual2(oldDataBlock[key], newDataBlock[key]) === false)
{
return false;
}
}
else
{
if (Array.isArray(newDataBlock[key]) === false)
{
return false;
}
if (_.differenceWith(oldDataBlock[key], newDataBlock[key], _.isEqual).length > 0)
{
return false;
}
}
break;
default:
if (oldDataBlock[key] !== newDataBlock[key])
{
return false;
}
}
}
return true;
}
function testObjectEquality ()
{
var a = {
"name": "John",
"age": 30,
"childs":...