EDITAR: faltaba una parte de mi función.
Es la primera vez que publico aquí, así que avísenme si lo estoy haciendo mal.
Aquí está mi problema:
Mis datos son así:
const lists = [ { idl: 'todo-0', namel: 'Example 1', tasks: [{ taskName: 'task', completedTask: true, taskId: "Un" },{ taskName: 'task2', completedTask: true, taskId: "Deux" },{ taskName: 'task3', completedTask: true, taskId: "Trois" }] }, { idl: 'todo-1', namel: 'Example 2', tasks: [{ taskName: 'task', completedTask: true, taskId: "Un" },{ taskName: 'task2', completedTask: true, taskId: "Deux" },{ taskName: 'task3', completedTask: true, taskId: "Trois" }] }]Intenté muchas cosas y VScode se enojó por mi sintaxis. Puedo apuntar la matriz 2 que quiero con esta función, pero elimina las claves de las tareas: <
const toggleTask = (listId: string, taskId: string) => { const listIndex = lists.findIndex((list)=>list.idl === listId); const list = lists[listIndex] const newList = { ...list, tasks: list.tasks.map((task)=> {if (taskId=== task.taskId){return task.completedTask === true} } ) } const newLists = [ ...lists.slice(0,listIndex), newList, ...lists.slice(listIndex + 1), ] console.log('newLists2', newLists) }Lo que me gustaría es por ejemplo:
alternarTarea("todo-1", "Un")
salida esperada:
[ { idl: 'todo-0', namel: 'Example 1', tasks: [{ taskName: 'task', completedTask: true, taskId: "Un" },{ taskName: 'task2', completedTask: true, taskId: "Deux" },{ taskName: 'task3', completedTask: true, taskId: "Trois" }] }, { idl: 'todo-1', namel: 'Example 2', tasks: [{ taskName: 'task', completedTask: false, taskId: "Un" },{ taskName: 'task2', completedTask: true, taskId: "Deux" },{ taskName: 'task3', completedTask: true, taskId: "Trois" }] }]Comprueba si te ayuda
const toggleTask = (listId, taskId) => { const newLists = lists.map(listItem => { if(listItem.idl === listId){ listItem.tasks.map(task => { if(task.taskId === taskId) { task.completedTask = !task.completedTask; } return task; }); } return listItem; }); console.log(newLists); };