Tengo dos objetos de la siguiente manera:
var1 = { "ELEMENT1": [1110,1111], "ELEMENT2": ["909"], "ELEMENT3": ["910"] } var2 = { "ELEMENT3": [ { "ID":910, "NAME":"ELEMENT3", "DETAILS":"CURRENT" }, { "ID":912, "NAME":"ELEMENT3", "DETAILS":"FUTURE" } ], "ELEMENT2":[ { "ID":909, "NAME": "ELEMENT2", "DETAILS":"OUTAGE" }, { "ID": 910, "NAME": "ELEMENT2", "DETAILS":"OUTAGE" } ], "ELEMENT1":[ { "ID": 1110, "NAME": "WORK_PACKAGE", "DETAILS": "INLINE" }, { "ID": 1111, "NAME": "WORK_PACKAGE", "DETAILS": "INLINE" }, { "ID": 1112, "NAME": "WORK_PACKAGE", "DETAILS": "INLINE" }, { "ID": 1113, "NAME": "WORK_PACKAGE", "DETAILS": "INLINE" }] } Estoy tratando de crear un tercer objeto después de comparar var1 y var2 . El tercer objeto debe contener solo los ID que están presentes en var1 .
El tercer objeto debe tener el siguiente aspecto:
{ "ELEMENT3": [ { "ID":910, "NAME":"ELEMENT3", "DETAILS":"CURRENT" } ], "ELEMENT2":[ { "ID":909, "NAME": "ELEMENT2", "DETAILS":"OUTAGE" } ], "ELEMENT1":[ { "ID": 1110, "NAME": "WORK_PACKAGE", "DETAILS": "INLINE" }, { "ID": 1111, "NAME": "WORK_PACKAGE", "DETAILS": "INLINE" } ] }Esto debería hacerlo:
var var1 = { "ELEMENT1": ["1110","1111"], "ELEMENT2": ["909"], "ELEMENT3": ["910"] } var var2 = { "ELEMENT3": [ { "ID":910, "NAME":"ELEMENT3", "DETAILS":"CURRENT" }, { "ID":912, "NAME":"ELEMENT3", "DETAILS":"FUTURE" } ], "ELEMENT2":[ { "ID":909, "NAME": "ELEMENT2", "DETAILS":"OUTAGE" }, { "ID": 910, "NAME": "ELEMENT2", "DETAILS":"OUTAGE" } ], "ELEMENT1":[ { "ID": 1110, "NAME": "WORK_PACKAGE", "DETAILS": "INLINE" }, { "ID": 1111, "NAME": "WORK_PACKAGE", "DETAILS": "INLINE" }, { "ID": 1112, "NAME": "WORK_PACKAGE", "DETAILS": "INLINE" }, { "ID": 1113, "NAME": "WORK_PACKAGE", "DETAILS": "INLINE" }] } var obj = {}; Object.keys(var2).forEach((item) => { var2[item].forEach((subItem) => { if(var1[item].indexOf(`${subItem.ID}`) > -1) { obj[item] = [...(obj[item] ?? []), subItem] } }) }); console.log(obj);Puede recorrer var2 y filtrar los ID que incluye var1 y asignar accesorios filtrados a un nuevo objeto:
let var1 = { ELEMENT1: [1110, 1111], ELEMENT2: [909], ELEMENT3: [910], } let var2 = { ELEMENT3: [ { ID: 910, NAME: 'ELEMENT3', DETAILS: 'CURRENT' }, { ID: 912, NAME: 'ELEMENT3', DETAILS: 'FUTURE' }, ], ELEMENT2: [ { ID: 909, NAME: 'ELEMENT2', DETAILS: 'OUTAGE' }, { ID: 910, NAME: 'ELEMENT2', DETAILS: 'OUTAGE' }, ], ELEMENT1: [ { ID: 1110, NAME: 'WORK_PACKAGE', DETAILS: 'INLINE' }, { ID: 1111, NAME: 'WORK_PACKAGE', DETAILS: 'INLINE' }, { ID: 1112, NAME: 'WORK_PACKAGE', DETAILS: 'INLINE' }, { ID: 1113, NAME: 'WORK_PACKAGE', DETAILS: 'INLINE' }, ], } const result = {} for (let key in var2) { result[key] = var2[key].filter(o => var1[key]?.includes(o.ID)) } console.log(JSON.stringify(result, null, 2))