javascript - 覆盖特定位置的元素
问题描述
我有一个列表,该列表应该删除旧元素,但仅适用于 ID 也匹配的元素。做这个的最好方式是什么。到目前为止,我唯一要做的就是删除该元素。但是没有更好的选择来覆盖项目而不是删除它吗?
重要的是元素应该留在同一个地方。
这是我的清单
const [days, setDays] = useState(
[
{
id: 1,
day: 'Monday'
},
{
id: 2,
day: 'Sunday'
}
])
这是我的参数
const day = 'Friday'
const id = 2
和预期的输出
[
{
id: 1,
day: 'Monday'
},
{
id: 2,
day: 'Friday'
}
]
我试过的
const newDay = {
id: id,
day: day
};
setDays((days) => [
...days.map((day) =>
day.id=== id ? newDay: day
),
]);
解决方案
我用以下代码解决了你的问题:
let result = days.map(item => (item.id === newday.id ? newday : item));
有关完整示例,请参阅我的 Stackblitz:https ://stackblitz.com/edit/web-platform-5r74df?file=script.js
推荐阅读
- javascript - 列表中的like按钮,按下效果总是在第一个
- java - 我如何初始化另一个类的数组?
- azure - 在 sysprep 清理期间概括 VM 时 Sysprep 失败
- java - 通过 USB 传输原始数据(中断端点)
- javascript - Javascript - 将数据传递给不带括号的函数
- ruby-on-rails - 如何让图像在 ruby/shoes 中移动?
- asp.net-mvc-5 - 在 Sitefinity 11 中 - 可以通过 MVC 小部件在基本模板中生成自定义 html/脚本到 html 部分或标记
- javascript - axios POST 提交名称:字段两次
- python - 蟒蛇漂白剂:不一致的清洁行为
- sql - sqlite - WITH子句中的准备语句导致无限循环