比较Angular中的对象
是否有可能对Angular中的两个对象进行“深层”比较? 我想要做的是比较每个键/值对。 例如:
对象1
{ key1: "value1", key2: "value2", key3: "value3" }
对象2
{ key1: "value1", key2: "newvalue", key3: "value3" }
我需要的是比较失败,因为只有一个键/值对是不同的。 换句话说,所有的键/值对必须完全匹配,否则失败。 这是否已经内置到Angular中? 我确信如果真的需要的话,我可以写自己的服务,但是我希望它已经内置了。类似于angular.equals。
要比较两个对象,你可以使用:
angular.equals(obj1, obj2)
它做了深入的比较,并不取决于按键的顺序请参阅AngularJS DOCS和一点演示
var obj1 = { key1: "value1", key2: "value2", key3: {a: "aa", b: "bb"} } var obj2 = { key2: "value2", key1: "value1", key3: {a: "aa", b: "bb"} } angular.equals(obj1, obj2) //<--- would return true
假设这两个对象的顺序是一样的,只是将它们stringify
起来并比较!
JSON.stringify(obj1) == JSON.stringify(obj2);
这个线程迟了一点。 angular.equals做深入检查,但是没有人知道为什么它的行为不同,如果其中一个成员包含前缀“$”?
你可以用下面的input来试试这个Demo
var obj3 = {} obj3.a= "b"; obj3.b={}; obj3.b.$c =true; var obj4 = {} obj4.a= "b"; obj4.b={}; obj4.b.$c =true; angular.equals(obj3,obj4);