
Julian Roa Villamil
PreguntaHola, tengo un problema con la última función, la que actualiza una tarea por el id, la cosa es que no entiendo lo que el error me está tratando de decir, creo que tiene que ver con la forma como viene el nuevo objeto updates, el error es este:
expect(received).toEqual(expected) // deep equality - Expected - 10 + Received + 5 Array [ Object { - "completed": true, - "id": 1, - "name": "Comprar leche", - "notes": "Leche deslactosada", - "place": "supermercado", - "priority": 3, - "tags": Array [ - "shopping", - "home", - ], + "completed": undefined, + "id": undefined, + "name": undefined, + "priority": undefined, + "tags": undefined, }, Object { "completed": true, "id": 2, "name": "Llamar a Juan", "priority": 1, "tags": Array [ "personal", ], }, ]
Mi código es el siguiente:
const updateTask = (taskId, updates) => { console.log(updates); for (let idx = 0; idx < tasks.length; idx++) { //console.log(tasks[idx]); if (tasks[idx].id == taskId) { //console.log(tasks[idx]); tasks[idx].id = updates.id; tasks[idx].name = updates.name; tasks[idx].priority = updates.priority; tasks[idx].tags = updates.tags; tasks[idx].completed = updates.completed; } } //console.log('PT: ',pendingTasks); return tasks; };
me podrían ayudar por favor explicándome el problema que me está arrojando?

Julian Roa Villamil
Muchas gracias LeoCode0, estuve al inicio de ese live, pero me fui para no spoilearme, no lo recordaba jaja, voy a revisarlo, muchas gracias

Julian Roa Villamil
finalmente tuve que tomar parte de la respuesta de desestructuración de leoCode0 😣 tengo que revisar mejor ese tema. Aunque trate de hacerlo con mi propia lógica, de todas formas aun me gustaría saber si la forma como lo estaba haciendo tenía una solución, así que dejo por acá la función con el resultado y en comentarios lo que intente hacer, que básicamente es modificar el objeto del array:
const updateTask = (taskId, updates) => { console.log(updates); let pendingTasks = [] for (let idx = 0; idx < tasks.length; idx++) { //console.log(tasks[idx]); if (tasks[idx].id == taskId) { //console.log(tasks[idx]); //tasks[idx] = updates; //tasks.splice(idx, 1, updates) //tasks.splice(idx, 1); //tasks.slice(idx, 0, updates) tasks[idx] = { ...tasks[idx], ...updates} } }
Leonardo de los angeles Espinoza Hernandez
¡Hola!
Lo que pasa es que a la tarea se le está agregando más atributos al objeto por lo que debes asegurarte que estés agregando lo que ya trae consigo la tarea junto con sus actualizaciones
Si necesitas más inspiración te dejo aquí la grabación con nicobytes que resuelve este mismo problema 💪

Julian Roa Villamil
ok, viendo el error desde los comentarios, ya con colorsitos y un poco mejor organizado, entiendo que me están pasando un objeto con propiedades extra??