通过其键比较两个嵌套对象,并获取匹配的对象/数组

时间:2020-03-10 08:23:13

标签: javascript vue.js vuejs2 lodash

我有2个对象a和diff 我需要匹配的数组或嵌套对象“ a”中的对象。

如下所示的输入:

 var a = {
"AMI_DESCRIPTION":{
    "tags":{
        "aws":1,
        "vendor_param":1
    }
},
"AMI_ID":{
    "description":"The AWS AMI id for the version of Ontap for the VSA to boot up with",
    "tags":{
        "aws":1,
        "vendor_param":1
    }
},
"AMI_TYPE":{
    "allow":[
        "byol",
        "paygo10",
        "paygo2",
        "paygo"
    ],
    "default":"byol",
    "description":"Defined the type of Cloud Ontap AMI to be deployed",
    "tags":{
        "aws":1,
        "vendor_param":1
    }
},
"AWSCLI_PATH":{
    "default":"/usr/software/bin/aws",
    "description":"Path to AWS CLI binaries",
    "tags":{
        "aws":1,
        "dev_only":1,
        "vendor_param":1
    }
},
"AWS_DISABLE_ROLLBACK":{
    "allow":[
        "true",
        "false"
    ],
    "default":"false",
    "description":"",
    "tags":{
        "aws":1,
        "dev_only":1,
        "unsupported":1,
        "vendor_param":1
    }
},
"IMAGE_BUILDNAME":{
        "allow":[
            "cst-ok",
            "cit-ok",
            "none",
            "ignore_filter"
        ],
        "default":"cit-ok",
        "description":"filter",
        "tags":{
            "aws":1,
            "gcp":1,
            "vendor_param":1
        }
},
"IMAGE_DEBUG_TYPE":{
        "description":"tedst",
        "tags":{
            "common":1,
            "vendor_param":1
        }
},

映射a对象并返回diff对象中存在的字段的值

 var diff = {
    "IMAGE_BUILDNAME":"testing",
    "IMAGE_DEBUG_TYPE":"no"

}

预期输出:

  "IMAGE_BUILDNAME":{ "description":"sdsd.", "tags":{ "aws":1, "gcp":1, 
  "vendor_param":1 } }, "IMAGE_DEBUG_TYPE":{ "allow":[ "debug", "non-debug", 
  "ignore_filter" ], "default":"non-debug", "description":"filter.", "tags":{                
   "aws":1, "gcp":1, "vendor_param":1 } }

预先感谢

1 个答案:

答案 0 :(得分:0)

遍历diff属性,并将diff的每个属性作为字段及其值从output对象添加到a

 var output = {};

    for (let p in diff) {
        output[p]=a[p]
    }

完整示例

var a = {
    "AMI_DESCRIPTION": {
      "tags": {
        "aws": 1,
        "vendor_param": 1
      }
    },
    "AMI_ID": {
      "description": "The AWS AMI id for the version of Ontap for the VSA to boot up with",
      "tags": {
        "aws": 1,
        "vendor_param": 1
      }
    },
    "AMI_TYPE": {
      "allow": [
        "byol",
        "paygo10",
        "paygo2",
        "paygo"
      ],
      "default": "byol",
      "description": "Defined the type of Cloud Ontap AMI to be deployed",
      "tags": {
        "aws": 1,
        "vendor_param": 1
      }
    },
    "AWSCLI_PATH": {
      "default": "/usr/software/bin/aws",
      "description": "Path to AWS CLI binaries",
      "tags": {
        "aws": 1,
        "dev_only": 1,
        "vendor_param": 1
      }
    },
    "AWS_DISABLE_ROLLBACK": {
      "allow": [
        "true",
        "false"
      ],
      "default": "false",
      "description": "",
      "tags": {
        "aws": 1,
        "dev_only": 1,
        "unsupported": 1,
        "vendor_param": 1
      }
    },
    "IMAGE_BUILDNAME": {
      "allow": [
        "cst-ok",
        "cit-ok",
        "none",
        "ignore_filter"
      ],
      "default": "cit-ok",
      "description": "filter",
      "tags": {
        "aws": 1,
        "gcp": 1,
        "vendor_param": 1
      }
    },
    "IMAGE_DEBUG_TYPE": {
      "description": "tedst",
      "tags": {
        "common": 1,
        "vendor_param": 1
      }
    }
    }

    var diff = {
      "IMAGE_BUILDNAME": "testing",
      "IMAGE_DEBUG_TYPE": "no"
    }


    var output = {};

    for (let p in diff) {
        output[p]=a[p]
    }
    
    console.log(output)

相关问题