我对此很陌生,我有一个如下所示的对象数组,
arr1 = {
"ID": "sss",
"Name": "Ven"
"Main": [
{"ID": "asds-vg45"},
{"ID": "rrra-2e82"}
]
}
还有另一个值对象,如下所示,
obj1 = {
"AID": "ssasas222",
"Main": {
"asds-vg45" : {
"NAME" : "Item1",
"STML" : {
"MIKE" : {
"bearer" : {
"token" : "ya29.Gl0kBoYJD"
},
"STA" : true
}
},
"STATUS" : true
},
"rrra-2e82" : {
"NAME" : "Item2",
"STML" : {
"MIKE" : {
"bearer" : {
"token" : "yas9.Gl0kBoYJD"
},
"STA" : true
}
},
"STATUS" : true
},
"t655e-2e82" : {
"NAME" : "Item2",
"STML" : {
"MIKE" : {
"bearer" : {
"token" : "yas9.Gl0kBoYJD"
},
"STA" : true
}
},
"STATUS" : true
}
}
现在,我正在尝试获取一个新对象,其中包含“Main”对象的 obj1 中与“arr1”匹配的所有值以及“obj1”中的“ID”,这里的匹配 ID 是“Main”数组中的 ID,这在两者中都很常见,我试图获得的输出如下所示,
main_obj = {
"ID": "sss",
"Name": "Ven",
"AID": "ssasas222"
"Main": {
"asds-vg45" : {
"NAME" : "Item1",
"STML" : {
"MIKE" : {
"bearer" : {
"token" : "ya29.Gl0kBoYJD"
},
"STA" : true
}
},
"STATUS" : true
},
"rrra-2e82" : {
"NAME" : "Item2",
"STML" : {
"MIKE" : {
"bearer" : {
"token" : "yas9.Gl0kBoYJD"
},
"STA" : true
}
},
"STATUS" : true
}
}
}
最佳答案
您可以将给定数据的键和对象映射为一个新对象。
var data = { AID: "ssasas222", Main: { "asds-vg45": { NAME: "Item1", STML: { MIKE: { bearer: { token: "ya29.Gl0kBoYJD" }, STA: true } }, STATUS: true }, "rrra-2e82": { NAME: "Item2", STML: { MIKE: { bearer: { token: "yas9.Gl0kBoYJD" }, STA: true } }, STATUS: true }, "t655e-2e82": { NAME: "Item2", STML: { MIKE: { bearer: { token: "yas9.Gl0kBoYJD" }, STA: true } }, STATUS: true } } },
filter = { ID: "sss", Name: "Ven", Main: [{ ID: "asds-vg45" }, { ID: "rrra-2e82" }] },
result = Object.assign(
{},
data,
{ Main: Object.assign(...filter.Main.map(({ ID }) => ({ [ID]: data.Main[ID] }))) }
);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
关于javascript - 将值数组与另一个对象进行匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52530801/