[英]match array of value with another object
我是新來的,我有一個如下的對象數組,
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
}
}
現在,我想為它提供一個新的對象,其中包括與“ arr1”和“ obj1”中的“ ID”匹配的“ Main”對象的obj1中所有匹配的值,這里匹配的ID就是其中的一個兩者都通用的“ Main”數組,我嘗試獲取的輸出如下所示,
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
}
}
}
您應該可以通過reduce
來做到這一點:
const matches = arr1.Main
.reduce((acc, cur) => {
if (obj1.Main[cur.ID]) {
acc[cur.ID]: obj1.Main[cur.ID]
}
return acc
}, {})
const mainObj = {
ID: arr1.ID,
Name: arr1.Name,
AID: obj1.AID,
Main: matches
}
您只需遍歷ID數組並使用匹配的鍵構建一個新對象acc
。
您可以將鍵和給定數據的對象映射為新對象。
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; }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.