Estoy tratando de devolver los valores actualizados de Current para 'detailsState'. Intenté de la siguiente manera:
export function GetDetailsPayload(payload: INFO, detailsState: DetailsViewmodel, isSaved: boolean) { if (payload && payload.SSN && detailsState && detailsState.INFODetail && detailsState.INFODetail.Active) { detailsState.INFODetail.Active = payload; if (isSaved) { detailsState.INFODetail.Current.map((c, i) => { if (c.Id == detailsState.INFODetail.Active.Id) { c = payload; return c; } }); } } return detailsState; } Resultado real: detailsState.INFODetail.Current es el mismo en lugar de la carga útil.
Resultado esperado: detailsState.INFODetail.Current con el valor de la carga útil cuando se cumple la condición para uno de los elementos de una matriz.
¡Gracias!
Esta parte de tu código:
detailsState.INFODetail.Current.map((c, i) => { if (c.Id == detailsState.INFODetail.Active.Id) { c = payload; return c; } }); Asignas los elementos en .Current , pero en realidad no haces nada con el resultado asignado. Probablemente quisiste hacer esto en su lugar:
detailsState.INFODetail.Current = detailsState.INFODetail.Current.map((c, i) => { if (c.Id == detailsState.INFODetail.Active.Id) { c = payload; return c; } }); Tenga en cuenta que eso reemplazará ciertos elementos con undefined cuando no return c dentro del mapeador. Probablemente quisiste devolver el valor original de lo contrario:
detailsState.INFODetail.Current = detailsState.INFODetail.Current .map((c, i) => (c.Id == detailsState.INFODetail.Active.Id) ? payload : c);