通过在数组中选择2个id来设置布尔值为true/false



编辑:我的功能缺少了一部分

这是我第一次在这里发帖,如果我做错了请告诉我。

我的问题是:

我的数据是这样的:

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" }]
}]

我尝试了很多东西,VScode因为我的语法而生气。我可以用这个函数瞄准我想要的2个数组,但它删除了任务的键:<</p>

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)
}

我想要的是例如:

toggleTask("todo-1","Un"

exepected输出:


[
{
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" }]
}]

检查是否有帮助

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);
};

最新更新