我在该州有一组对象。该对象具有 order 属性。我需要用于拖放的订单道具。该列表按顺序排序。此外,还有一个从列表中删除项目的功能。如何通过更新 order 属性正确地从数组中删除元素?
const deleteTodo = (id) => {
//I tried using map but it doesn't work
setTodos(todos.map((todo, index) => {
if (todo.id !== id) {
return { ...todo, order: index + 1 }
}
return todo
}))
}
/* for example:
[{title: 'apple', order: 1}, {title: 'banana', order: 2}, {title: 'pear', order: 3}] => delete banana => [{title: 'apple', order: 1}, {title: 'pear', order: 2}] */
我根据建议的选项编写了这个解决方案:
const deleteTodo = (id) => {
const newTodos = todos
.filter(todo => todo.id !== id)
.map((todo, index) => ({ ...todo, order: index + 1 }))
setTodos(newTodos)
}
const items = [{
title: 'apple',
order: 1
}, {
title: 'banana',
order: 2
}, {
title: 'pear',
order: 3
}]
//Delete {title: 'banana', order: 2}
const newItems = items.filter(el => el.title !== "banana").map(el => el.order > 2 ? ({ ...el,
order: el.order - 1
}) : el)
console.log(newItems)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句