Veo que todos los bucles para objetos devuelven la clave como cadena y el valor, pero quiero operar en las claves del objeto en sí. Si tengo este objeto:
const data = { person1: [ { id: 1, name: Mike, age: 24 }, { id: 2, name: Bob, age: 31 } ], person2: [ { id: 3, name: Christin, age: 21 }, { id: 4, name: Michelle, age: 33 } ], } const removePersonById = (id) => { // Check which person the id belongs to and remove that person const persons = Object.keys(data).map(person => ...) } Quería recorrer los datos y ejecutar .includes en cada persona para eliminarlos por la identificación, pero no sé cómo hacerlo.
Puede recorrer todas las claves y eliminar a la persona que desea por identificación usando el método filter()
const removePersonById = (id) => { var all = Object.keys(data); for(let person of all){ data[person] = data[person].filter(a => a.id!=id); } }Use Object.entries() para que pueda iterar sobre las claves y los valores juntos. Luego puede probar el valor para ver si se encuentra la id .
Luego use el operador de delete para eliminar esa clave del objeto.
const removePersonById = id => { delete data[id]; }; const data = { person1: [ { id: 1, name: "Mike", age: 24 }, { id: 2, name: "Bob", age: 31 } ], person2: [ { id: 3, name: "Christin", age: 21 }, { id: 4, name: "Michelle", age: 33 } ], }; const removePersonById = (id) => Object.entries(data).forEach(([key, value]) => { if (value.some(({id: personid}) => personid == id)) { delete data[key]; } }); removePersonById(3); console.log(data); let data = { person1: [ { id: 1, name: "Mike", age: 24 }, { id: 2, name: "Bob", age: 31 } ], person2: [ { id: 3, name: "Christin", age: 21 }, { id: 4, name: "Michelle", age: 33 } ], } const removePersonById = (id) => { // Check which person the id belongs to and remove that person data = Object.keys(data).reduce((acc,key) => { if(data[key].some(person=>person.id===id)) return acc acc[key]= data[key] return acc }, {}) console.log(`Remove person with ID ${id}: `,data) } removePersonById(1)