Angular进行深度比较,并返回每一项的差值
Angular equals with deep comparison and return difference on each item
我想使用angular.equals
比较两个数组,并获得彼此不同的项列表。
var obj1 = [
{ id: 1, name: 'john', age: 30, height: 6 },
{ id: 2, name: 'ben' , age: 20, height: 5 }
];
var obj2 = [
{ id: 1, name: 'martin', age: 25, height: 6 },
{ id: 2, name: 'ben' , age: 20, height: 5 }
];
现在执行angular.equals(obj1, obj2)
将返回false
。
这里我想比较不同数组中的每个项目,并在UI中显示时警告差异或显示不同的颜色。
假设obj1
来自HTML表单,obj2
来自服务。
结果预期:
。id[1]姓名改为john,年龄改为25岁
或
。当我比较中的每个条目时,得到false或true
Angular没有这样的内置函数。您应该使用库deep-diff。
var first = [
{ id: 1, name: 'john', age: 30, height: 6 },
{ id: 2, name: 'ben' , age: 20, height: 5 }
];
var second = [
{ id: 1, name: 'martin', age: 25, height: 6 },
{ id: 2, name: 'ben' , age: 20, height: 5 }
];
var result = diff(first, second);
// result => [
// { kind: 'E', path: [0, 'name'], lhs: 'john', rhs: 'martin' },
// { kind: 'E', path: [0, 'age' ], lhs: 30 , rhs: 25 }
// ]
正如klode在这里所说的,有一个选项可以只使用angular 来深度比较,而不需要额外的依赖项:
angular.equals(obj1, obj2)
相关文章:
- 如何从对象数组中获取最后一项
- 为什么只有最后一项显示,而不是全部显示
- 删除最后一项jquery
- $q.all当输入数组中的一项不是promise时,Typescript检查器失败
- 为什么我的“for”循环只获取 html 中的最后一项
- 我无法将下拉列表的默认值设置为最后一项
- 流星批量插入仅插入最后一项
- 我怎么能知道元素是最后一项
- 如何删除WinJS组绑定列表的最后一项
- 在immutable.js中更改列表中的一项
- 使用handlers.js模板以数组中的最后一项为条件
- empty().append()追加循环中的最后一项
- jQuery只附加最后一项
- 将属性添加到 for 循环中的最后一项
- 我的应用仅显示一项检索到的数据
- 如何在 visjs 时间轴中按时间顺序获取 getVisibleItems(或如何获取上一项)
- 滑动视图 - 显示下一项的预览/片段
- 检查单词是否具有相同的字母 - 错过一项测试
- 如何按排序键顺序获取对象中的最后一项
- Angular进行深度比较,并返回每一项的差值