Hola, 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á t...

Pregunta de la clase:
Playground - Task planner
Julian Roa Villamil

Julian Roa Villamil

Pregunta
studenthace 2 años

Hola, 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?

4 respuestas
para escribir tu comentario
    Julian Roa Villamil

    Julian Roa Villamil

    studenthace 2 años

    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

    Julian Roa Villamil

    studenthace 2 años

    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

    Leonardo de los angeles Espinoza Hernandez

    studenthace 2 años

    ¡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

    Julian Roa Villamil

    studenthace 2 años

    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??

30 días de JavaScript

30 días de JavaScript

Durante 6 semanas continuas estaremos aprendiendo desde 0 las características de JavaScript con la peculiaridad de aprender conceptos nuevos diariamente con ejercicios prácticos y cursos de tus profesores favoritos. Te estaremos acompañando en todo tu proceso de diferentes maneras, empezando por un canal exclusivo en Discord para participantes de este reto, al igual que tendremos sesiones semanales de Q&amp;A para despejarte tus dudas o ayudarte con algo en lo que te encuentres estancado o estancada.

30 días de JavaScript
30 días de JavaScript

30 días de JavaScript

Durante 6 semanas continuas estaremos aprendiendo desde 0 las características de JavaScript con la peculiaridad de aprender conceptos nuevos diariamente con ejercicios prácticos y cursos de tus profesores favoritos. Te estaremos acompañando en todo tu proceso de diferentes maneras, empezando por un canal exclusivo en Discord para participantes de este reto, al igual que tendremos sesiones semanales de Q&amp;A para despejarte tus dudas o ayudarte con algo en lo que te encuentres estancado o estancada.