JSON compare

by Kesavamoorthi Subramanian

HTML

<h3 id="headerId"></h3>

JavaScript

var mergeSort = (function () {
    function merger(array, start, end) {
        if (Math.abs(end - start) <= 1) {
            return [];
        }
        var middle = Math.ceil((start + end) / 2);

        merger(array, start, middle);
        merger(array, middle, end);

        return merge(array, start, middle, end);
    }

    function merge(array, start, middle, end) {
        var left = [],
            right = [],
            leftSize = middle - start,
            rightSize = end - middle,
            maxSize = Math.max(leftSize, rightSize),
            size = end - start,
            i;

        for (i = 0; i < maxSize; i += 1) {
            if (i < leftSize) {
                left[i] = array[start + i];
            }
            if (i < rightSize) {
                right[i] = array[middle + i];
            }
        }
        i = 0;
        while (i < size) {
            if (left.length && right.length) {
                if (left[0] >= right[0]) {
                    array[start + i] = right.shift();
                } else {
                    array[start + i] = left.shift();
                }
            } else if (left.length) {
                array[start + i] = left.shift();
            } else {
                array[start + i] = right.shift();
            }
            i += 1;
        }
        return array;
    }
    return function (array) {
        return merger(array, 0, array.length);
    }

}());

function isObjectsEqual (oldDataBlock, newDataBlock) // TODO: Test it with all possible values
{/* console.log(oldDataBlock); */
  /* let isEqual = true; */

  for (let key in oldDataBlock)
  {/* console.log('key:', key, typeof key); */
    if (newDataBlock.hasOwnProperty(key) !== true || typeof oldDataBlock[key] !== typeof newDataBlock[key] || (typeof oldDataBlock[key] !== 'object' && oldDataBlock[key] !== newDataBlock[key]))
    {
      /* isEqual = false; */
/* console.log('check 1:', isEqual); */
      /* break; */
      return false;
    }

   ...