Javascript 按键比较两个嵌套对象并获得匹配的对象/数组
我有两个对象a和diff 我需要嵌套对象“a”中的匹配数组或对象 输入如下: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":{
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
在该数组中?同样,对于输出中的其他属性,也没有逻辑