Tengo una matriz de objetos que consta de algunas identificaciones como clave.
const sampleObj1 = {0011:[{},{}], 0022:[{}, {}], 0033:[{},{}]} const sampleObj2 = [{id:0011, name:'test1'}, {id:0022, name:'test2'}, {id:0033, name:'test3'}]Quiero comparar la clave sampleObj1 con el valor de identificación de sampleObj2 y luego necesito crear un nuevo obj como el siguiente.
const newObjByComparing = {test1:[{},{}], test2:[{},{}], test3:[{},{}]} //desired resultIntenté usar for loop pero no pude obtener el valor comparado deseado.
const fromRdx = sampleObj2; const fromApi = sampleObj1; const keys = Object.keys(fromApi); const newObjAfterComparision = {}; for (let i in fromRdx) { newObjAfterComparision[fromRdx[i]] = fromApi[keys[i]]; fromApi[fromRdx[i]] = fromApi[keys[i]]; delete fromApi[keys[i]]; } console.log(newObjAfterComparision)La siguiente puede ser una posible solución para lograr el objetivo deseado:
Fragmento de código
const transformObj = (obj, arr) => arr.reduce((f, i) => ({ ...f, [i.name]: obj[i.id] }), {}); const sampleObj = { "0011": [{}, {}], "0022": [{}, {}], "0033": [{}, {}] }; const sampleArr = [{ id: "0011", name: "test1" }, { id: "0022", name: "test2" }, { id: "0033", name: "test3" }]; console.log(transformObj(sampleObj, sampleArr));explanación
.reduce() para iterar sobre sampleArrf )name del elemento y el valor será el valor de sampleObj (donde la clave es la id del elemento)Otro enfoque usando map y Object.fromEntries
const sampleObj1 = {'0011':[{},{}], '0022':[{}, {}], '0033':[{},{}]} const sampleObj2 = [{id:'0011', name:'test1'}, {id:'0022', name:'test2'}, {id:'0033', name:'test3'}] let y = Object.fromEntries(sampleObj2.map(({id,name}) => [name,sampleObj1[id]])) console.log(y)Tengo una solución simple para ti.
const sampleObj1 = {0011:[{},{}], 0022:[{}, {}], 0033:[{},{}]} const sampleObj2 = [{id:0011, name:'test1'}, {id:0022, name:'test2'}, {id:0033, name:'test3'}] const keys = Object.keys(sampleObj1); const newObjByComparing = sampleObj2.reduce((acc, cur, index) => { acc[cur.name] = sampleObj1[keys[index]]; return acc; }, {});