Equivalent of angular.equals in angular2 Equivalent of angular.equals in angular2 angularjs angularjs

Equivalent of angular.equals in angular2


@Günter Yes you are right there is no equivalent in angular2 . While searching more I found third party library lodash which will do same job as angular.equals and syntax is same as angular one and this library solves my problem

Code example from lodash documentation

var object = { 'a': 1 };var other = { 'a': 1 }; _.isEqual(object, other);// => true object === other;// => false


I rewrote Ariels answer (thank you!) to be TSLINT-friendly. You can also save some continues by using else if, but I think this is more clear. Maybe someone else needs it too:

export function deepEquals(x, y) {  if (x === y) {    return true; // if both x and y are null or undefined and exactly the same  } else if (!(x instanceof Object) || !(y instanceof Object)) {    return false; // if they are not strictly equal, they both need to be Objects  } else if (x.constructor !== y.constructor) {    // they must have the exact same prototype chain, the closest we can do is    // test their constructor.    return false;  } else {    for (const p in x) {      if (!x.hasOwnProperty(p)) {        continue; // other properties were tested using x.constructor === y.constructor      }      if (!y.hasOwnProperty(p)) {        return false; // allows to compare x[ p ] and y[ p ] when set to undefined      }      if (x[p] === y[p]) {        continue; // if they have the same strict value or identity then they are equal      }      if (typeof (x[p]) !== 'object') {        return false; // Numbers, Strings, Functions, Booleans must be strictly equal      }      if (!deepEquals(x[p], y[p])) {        return false;      }    }    for (const p in y) {      if (y.hasOwnProperty(p) && !x.hasOwnProperty(p)) {        return false;      }    }    return true;  }}


Instead of writing a function to iterate through the objects, you could just use JSON.stringify and compare the two strings?

Example:

var obj1 = {  title: 'title1',  tags: []}var obj2 = {  title: 'title1',  tags: ['r']}console.log(JSON.stringify(obj1));console.log(JSON.stringify(obj2));console.log(JSON.stringify(obj1) === JSON.stringify(obj2));