是否有可能对Angular中的两个对象进行"深度"比较?我想要做的是比较每个键/值对.例如:
对象1
{
key1: "value1",
key2: "value2",
key3: "value3"
}
Run Code Online (Sandbox Code Playgroud)
对象2
{
key1: "value1",
key2: "newvalue",
key3: "value3"
}
Run Code Online (Sandbox Code Playgroud)
我需要的是比较失败,因为只有一个键/值对是不同的.换句话说,所有键/值对必须完全匹配或者失败.这是否已经内置于Angular中.我确信如果我真的需要,我可以编写自己的服务,但我希望它已经内置.类似于angular.equals.
klo*_*ode 203
要比较两个对象,您可以使用:
angular.equals(obj1, obj2)
它进行了深入的比较,并不依赖于键的顺序.请参阅AngularJS DOCS和一些Demo
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
Run Code Online (Sandbox Code Playgroud)
tym*_*eJV 23
假设两个对象中的顺序相同,只需将stringify它们进行比较即可!
JSON.stringify(obj1) == JSON.stringify(obj2);
Run Code Online (Sandbox Code Playgroud)
小智 5
在这个帖子上迟到了.angular.equals做深度检查,但有人知道为什么如果其中一个成员在前缀中包含"$",它的行为会有所不同?
您可以 通过以下输入尝试此演示
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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
94835 次 |
| 最近记录: |