Tengo una matriz obj, y estoy y estoy agregando otros enlaces de objetos y estoy creando una matriz en serie en el objeto. Quiero crear otra matriz de películas después de la matriz de series.
const obj = { projectId: 0, gridId: 0, createValues: [ { field: "string", value: "string" } ] }; const dataCompo = { "model-10389": 164703, "model-10388": 164704, "model-10387": 164705 }; const dataTraca = { "model-10389": [1656, 1234, 1245], "model-10384": [1656, 1234, 1245], "model-10383": [1656, 1234, 1245], }; const ser = Object.entries(dataCompo).map(([key, value]) => ({ modelId: key.substring(6), id: value })); obj.links = { serie: ser }; const mov = Object.entries(dataTraca).map(([key,value]) => ({ modelId: key.substring(6), ids: value })); obj.links = { movie: mov }; console.log(obj);La cosa es así: está reemplazando todo el objeto de enlaces y la matriz de series con la película. No puedo entender cómo usar el operador de propagación.
He logrado hacerlo en una línea como esta:
obj.links = { serie: ser, movie:mov };Sin embargo, me gustaría hacerlo por separado como arriba.
puedes hacer algo como esto
const obj = { projectId: 0, gridId: 0, createValues: [{ field: "string", value: "string" }] }; const dataCompo = { "model-10389": 164703, "model-10388": 164704, "model-10387": 164705 }; const dataTraca = { "model-10389": [1656, 1234, 1245], "model-10384": [1656, 1234, 1245], "model-10383": [1656, 1234, 1245], }; const newData = [ ['movie', dataCompo], ['serie', dataTraca] ].reduce((res, [key, value]) => { return { ...res, [key]: Object.entries(value).map(([key, value]) => ({ modelId: key.substring(6), id: value })) } }, obj) console.log(newData)