Estoy tratando de cambiar el valor del objeto de la matriz, pero no funciona como se esperaba. Intenté seguir.
const arrObj = [ { "label": "test1", "value": 123, "type": "number", "field": { "label": "another", "description": "abcd" } }, { "label": "test2", "value": 111, "type": "number" }, ] arrObj.forEach(obj => { obj = {...obj, ...obj.field} delete obj.field }) console.log("after:", arrObj);También encontré alguna solución para usar el índice, pero agrega el índice antes del objeto.
const arrObj = [ { "label": "test1", "value": 123, "type": "number", "field": { "label": "abcd", "description": "abcd" } }, { "label": "test2", "value": 111, "type": "number" } ] arrObj.forEach((obj, index) => { obj[index] = {...obj, ...obj.field} delete obj.field }) console.log("after:", arrObj);¿Cómo puedo hacer con forEach?
Editar:
Quiero eliminar el objeto de campo y asignar/sobrescribir toda la propiedad exterior.
Usaría el mapa para cambiar una matriz, pero es posible que tenga una razón por la que desee modificar el original. Simplemente podría reasignar arrObj a la salida del mapa.
const arrObj = [ { "label": "test1", "value": 123, "type": "number", "field": { "label": "another", "description": "abcd" } }, { "label": "test2", "value": 111, "type": "number" }, ] const newArr = arrObj.map(( obj ) => { const {field, ...rest} = obj return {...field, ...rest} }) console.log("after:", newArr);Usar el map y asignar el resultado es probablemente una mejor manera de hacerlo, pero si desea usar forEach , debe asignarlo a la matriz original dentro del bucle:
const arrObj = [ { "label": "test1", "value": 123, "type": "number", "field": { "label": "another", "description": "abcd" } }, { "label": "test2", "value": 111, "type": "number" }, ] arrObj.forEach(({ field, ...rest}, idx, orig) => { orig[idx] = { ...rest, ...field } }) console.log(arrObj);