Tengo un objeto de 4 matrices como las siguientes
const data = { arr1 : [{id: 1, name: "Mike"}, {id: 2, name: "Peter"}], arr2 : [{id: 6, name: "John"}, {id: 9, name: "Mary"}], arr3 : [{id: 5, name: "Nick"}, {id: 4, name: "Ken"}], arr4 : [{id: 3, name: "Kelvin"}, {id: 7, name: "Steve"}, {id: 8, name: "Hank"}] }Entonces necesito encontrar un elemento y actualizarlo. Esto es lo que probé:
const updateElement = (id: number, newName: string) => { let idx: number; idx = data.arr1.findIndex((e) => e.id === id); if (idx !== -1) data.arr1[idx].name = newName; idx = data.arr2.findIndex((e) => e.id === id); if (idx !== -1) data.arr2[idx].name = newName; idx = data.arr3.findIndex((e) => e.id === id); if (idx !== -1) data.arr3[idx].name = newName; idx = data.arr4.findIndex((e) => e.id === id); if (idx !== -1) data.arr4[idx].name = newName; }¿Hay alguna forma mejor de actualizar un elemento de varias matrices que mi enfoque? Suponga que cada matriz tiene la misma interfaz de elementos.
puede usar Object.values() y flat() para actualizarla:
const data = { arr1 : [{id: 1, name: "Mike"}, {id: 2, name: "Peter"}], arr2 : [{id: 6, name: "John"}, {id: 9, name: "Mary"}], arr3 : [{id: 5, name: "Nick"}, {id: 4, name: "Ken"}], arr4 : [{id: 3, name: "Kelvin"}, {id: 7, name: "Steve"}, {id: 8, name: "Hank"}] } const updateElement = (id, newName) => { const values = Object.values(data).flat().find(ele => ele.id === id) if(values) values.name = newName } updateElement(1, 'newName') console.log(data)