Javascript 按键比较两个嵌套对象并获得匹配的对象/数组

Javascript 按键比较两个嵌套对象并获得匹配的对象/数组,javascript,vue.js,vuejs2,lodash,Javascript,Vue.js,Vuejs2,Lodash,我有两个对象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":{

我有两个对象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 } }

提前感谢

通过
diff
属性循环,并将
diff
的每个属性添加到
输出
as字段中,并从
a
对象中添加其值:

 var output = {};

    for (let p in diff) {
        output[p]=a[p]
    }
完整示例
var a={
“AMI_说明”:{
“标签”:{
“aws”:1,
“供应商参数”:1
}
},
“AMI_ID”:{
“说明”:“VSA启动所用Ontap版本的AWS AMI id”,
“标签”:{
“aws”:1,
“供应商参数”:1
}
},
“AMI_类型”:{
“允许”:[
“拜尔”,
“paygo10”,
“paygo2”,
“paygo”
],
“默认值”:“byol”,
“说明”:“定义了要部署的云Ontap AMI的类型”,
“标签”:{
“aws”:1,
“供应商参数”:1
}
},
“AWSCLI_路径”:{
“默认值”:“/usr/software/bin/aws”,
“说明”:“AWS CLI二进制文件的路径”,
“标签”:{
“aws”:1,
“仅适用于开发人员”:1,
“供应商参数”:1
}
},
“AWS\u禁用\u回滚”:{
“允许”:[
“真的”,
“假”
],
“默认值”:“false”,
“说明”:“,
“标签”:{
“aws”:1,
“仅适用于开发人员”:1,
“不支持”:1,
“供应商参数”:1
}
},
“图像构建名称”:{
“允许”:[
“cst ok”,
“cit ok”,
“没有”,
“忽略过滤器”
],
“默认值”:“cit ok”,
“说明”:“过滤器”,
“标签”:{
“aws”:1,
“gcp”:1,
“供应商参数”:1
}
},
“图像调试类型”:{
“说明”:“tedst”,
“标签”:{
"共同":一,,
“供应商参数”:1
}
}
}
变量差异={
“图像构建名称”:“测试”,
“图像调试类型”:“否”
}
var输出={};
for(设p为diff){
输出[p]=a[p]
}

console.log(output)
请提供更多详细信息我已经编辑了输出,因此您可以阅读它-请提供从输入到输出的逻辑,然后将其全部撤消-很好done@JaromandaX很抱歉把它弄坏了。我没有检查它,例如,为什么
是“description”:“sdsd。”
-这是从哪里来的?输出中的“
”允许“:[“调试”、“非调试”、“忽略过滤器”]
是如何实现的?为什么
debug
在该数组中?同样,对于输出中的其他属性,也没有逻辑