Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 2如何使用下划线比较2个JSON的所有属性(一个除外)?_Javascript_Json_Angularjs_Underscore.js - Fatal编程技术网

Javascript 2如何使用下划线比较2个JSON的所有属性(一个除外)?

Javascript 2如何使用下划线比较2个JSON的所有属性(一个除外)?,javascript,json,angularjs,underscore.js,Javascript,Json,Angularjs,Underscore.js,我使用的是下划线js的u.isFilter方法。如果我想检查两个JSON是否相同,它就可以完美地工作。但我面临一个小问题:在一个JS中,我也有$$hashKey作为属性,而在另一个JS中,它不存在。我如何比较2个JSON的所有属性,除了一个属性,即$$hashKey $rootScope.jsonOfHRA = $scope.setFileNameAndOtherProperties($rootScope.jsonOfHRA); globalJsonHRA = JSON.parse(JSON.

我使用的是下划线js的u.isFilter方法。如果我想检查两个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;
                                        });

您可以使用
\省略
功能,在
字符串化
之前取出您不想比较的键:

从:

省略
\省略(对象,*键)

返回对象的副本,过滤到 省略黑名单中的键(或键数组)。或者接受 指示要忽略哪些键的谓词

在您的例子中,您可以从JSON创建对象,
省略
$$hashKey
属性,然后进行比较

_.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'}