#使用lodash比较两个json数组的差异
在使用jqgrid的本地数据模式时,需要实现本地数据的增删改功能,保存数据时就需要对原始的json数组和最新的json数组作比较,此时可以使用lodash.js的比较方法。
注意:引用lodash时,需要引用lodash.js,不能引用lodash.core.js,因为后者不包含本文中所使用的方法
具体方法如下:
假如object包含两个属性,varName和varValue,在比较时,只要varName相同则标识两个object相同,此时使用_.differenceWith(arr1,arr2,comparer)方法即可,该方法返回arr1中存在而arr2中不存在的object,返回值是一个新的数组:
var c1Arr = [{
varName: 'city',
varValue: 'cccccccc'
}, {
varName: 'country',
varValue: 'dddddddd'
}]
var c2Arr = [{
varName: 'abc',
varValue: 'aaa'
}, {
varName: 'city',
varValue: 'cccccccc'
}, {
varName: 'country',
varValue: 'dddddddd'
}]
var dArr = _.differenceWith(c2Arr, c1Arr,function(x,y){
x.varName==y.varName&&x.varValue==y.varValue
});
如果是需要比较所有属性,则直接使用_.differenceWith(c2Arr, c1Arr, _.isEqual)即可