Как добавить больше элементов в многомерный массив в React

#javascript #arrays #reactjs #react-hooks

Вопрос:

Всем привет, пока не поздно и не поздно, я не могу работать .

Мне нужно обновить каждый флажок, когда это правда или ложь (массив задач-флажок в интерфейсе)

 Data seeds
 const datas = [
    {
        id: 10,
        name: job01,
        tasks: [
            { name: "morning", value: false },
            { name: "afternoon", value: true },
            { name: "sunset", value: false },
            { name: "night", value: true },
        ],
        completed: false
    }];
 

следующий код для обновления данных при нажатии одного флажка:

 const [todos, setTodos] = useState(datas)

const toggleTask = taskId => {

    const updateTodos = todos.forEach(to => {
        to.tasks.forEach(task => {
            if (taskId === to.name) 
               console.log('update datas: ', { ...task,  value: !task.value})

            }
          })
        
    })console.log('Result: ', updateTodos ) };//only show undefined
 

Thnz для чтения.

Ответ №1:

forEach ничего не возвращает, возможно, вам захочется сначала сопоставить массив, а затем отфильтровать элементы:

 // get a list of the tasks that you need to update
const needUpdateTodos = todos.flatMap(
     to => to.tasks.filter(task => taskId === to.name)
);
// for each task that you need to update, change the value to the opposite
const updatedTodos = needUpdateTodos.map(el => {
    task.value = !task.value;
    console.log('update datas: ', task)
    return task
})
// show resulting tasks updated
console.log('Result: ', updatedTodos )