首页 > 解决方案 > 覆盖特定位置的元素

问题描述

我有一个列表,该列表应该删除旧元素,但仅适用于 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
      ),
    ]);

标签: javascriptreactjsuse-state

解决方案


我用以下代码解决了你的问题:

let result = days.map(item => (item.id === newday.id ? newday : item));

有关完整示例,请参阅我的 Stackblitz:https ://stackblitz.com/edit/web-platform-5r74df?file=script.js


推荐阅读