我正在使用下划线js的_.isFilter方法。如果我要检查2个JSON是否相同,它会完美地工作。但是我面临一个小问题。在一个JS中,我也有$$ hashKey作为属性,而在另一个JS中则不存在。我如何比较2个JSON的所有属性,除了一个属性,即$$ hashKey。
$rootScope.jsonOfHRA = $scope.setFileNameAndOtherProperties($rootScope.jsonOfHRA);
globalJsonHRA = JSON.parse(JSON.stringify($rootScope.jsonOfHRA));
//This is how I make a deep copy of JSON
JSONOFHRA=
{
"toShowVerified": 0,
"sec10_decl_id": 390,
"toShowEdit": 0,
"toShowlineItemEditable": true,
"edit": false,
"sec10_decl_act_val": 0,
"sec10_decl_other_text1": "asdsa",
"sec10_decl_other_text2": "3434",
"sec10_decl_other_text3": "adasda",
"sec10_decl_decl_from_dt": "01/05/2014",
"sec10_decl_status": 0,
"sec10_decl_yr_end": "2015-03-31",
"sec10_decl_yr_id": 2014,
"listOfAttachments": [],
"nameOfPayheadToShow": "HRA",
"sec10_decl_proof": 0,
"sec10_decl_ver_val": 0,
"sec10_decl_yr_st": "2014-04-01",
"sec10_decl_cust_id": 315,
"add": false,
"sec10_decl_curr_id": 0,
"sec10_decl_mod_on": "2014-10-28 12:46:14.0",
"sec10_decl_add_on": "2014-10-28 12:38:49.0",
"sec10_decl_decl_to_dt": "30/06/2014",
"sec10_decl_user_id": 32967,
"sec10_decl_active": 0,
"sec10_decl_decl_val": 1234,
"sec10_decl_head_id": 3,
"sec10_decl_decl_text": "Delhi",
"$$hashKey": "19I"
}
GLOBALJSON =
{
"toShowVerified": 0,
"sec10_decl_id": 390,
"toShowEdit": 0,
"toShowlineItemEditable": true,
"edit": false,
"sec10_decl_act_val": 0,
"sec10_decl_other_text1": "asdsa",
"sec10_decl_other_text2": "3434",
"sec10_decl_other_text3": "adasda",
"sec10_decl_decl_from_dt": "01/05/2014",
"sec10_decl_status": 0,
"sec10_decl_yr_end": "2015-03-31",
"sec10_decl_yr_id": 2014,
"listOfAttachments": [],
"nameOfPayheadToShow": "HRA",
"sec10_decl_proof": 0,
"sec10_decl_ver_val": 0,
"sec10_decl_yr_st": "2014-04-01",
"sec10_decl_cust_id": 315,
"add": false,
"sec10_decl_curr_id": 0,
"sec10_decl_mod_on": "2014-10-28 12:46:14.0",
"sec10_decl_add_on": "2014-10-28 12:38:49.0",
"sec10_decl_decl_to_dt": "30/06/2014",
"sec10_decl_user_id": 32967,
"sec10_decl_active": 0,
"sec10_decl_decl_val": 1234,
"sec10_decl_head_id": 3,
"sec10_decl_decl_text": "Delhi"
}
//This is how I am comparing
if(_.isEqual(modifiedJson[i], GlobalUnmodifiedJson[j])){
var idOfUnmodifiedLineItem = modifiedJson[i]["sec10_decl_id"];
alert("Coming here in realm of unmodified of modifed");
modifiedJson = _.filter(modifiedJson, function(item) {
return item.id !== idOfUnmodifiedLineItem;
});
您可以使用_.omit
函数在stringify
:之前取出不想比较的键:
省略
_.omit(object, *keys)
返回该对象的副本,该对象经过过滤以省略列入黑名单的键(或键数组)。或者,接受一个谓词,该谓词表示要忽略的键。
_.omit({name: 'moe', age: 50, userid: 'moe1'}, 'userid');
=> {name: 'moe', age: 50}
_.omit({name: 'moe', age: 50, userid: 'moe1'}, function(value, key, object) {
return _.isNumber(value);
});
=> {name: 'moe', userid: 'moe1'}
在你的情况,你可以创建从JSON,对象omit
的$$hashKey
属性,然后进行比较。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句