Tengo el siguiente objeto dado:
{ "groupA": [ {data: 'foo'}, {data: 'bar'} ], "groupB": [ {data: 'hi'}, {data: 'mom'} ] }Me gustaría agregar las claves del objeto principal a todos los elementos de su matriz de la siguiente manera:
{ "groupA": [ {data: 'foo', set: 'groupA'}, {data: 'bar', set: 'groupA'} ], "groupB": [ {data: 'hi', set: 'groupB'}, {data: 'mom', set: 'groupB'} ] }¿Cómo puedo conseguir esto?
Esta es una versión inmutable que le brinda un nuevo objeto usando Object.fromEntries Object.entries y map
const data = { "groupA": [{ data: 'foo' }, { data: 'bar' } ], "groupB": [{ data: 'hi' }, { data: 'mom' } ] } const withGroup = Object.fromEntries( Object.entries(data).map(([set, items]) => [set, items.map(i => ({ ...i,set}))]) ) console.log(withGroup)Puede hacerlo simplemente recorriendo el objeto y mapeando las matrices, así:
const data = { "groupA": [ {data: 'foo'}, {data: 'bar'} ], "groupB": [ {data: 'hi'}, {data: 'mom'} ] }; Object.keys(data).forEach(key => { data[key] = data[key].map(rec => ({...rec, set: key})); }) console.log(data);Puede hacer un bucle y configurar cada elemento
const obj = { "groupA": [ {data: 'foo'}, {data: 'bar'} ], "groupB": [ {data: 'hi'}, {data: 'mom'} ] }; Object.entries(obj).forEach(([key,val]) => val.forEach(item => item.set=key)) console.log(obj)