gpt4 book ai didi

javascript - immutable.js:删除集合中的项目

转载 作者:行者123 更新时间:2023-11-28 06:25:38 27 4
gpt4 key购买 nike

所以我有一个 immutable.js 事件对象集。

Set 是 Calendar 对象的一个​​属性:

const Calendar = new Record({
'events': new Set(), // set of Events
});

我正在使用 Redux,并触发操作以在日历中添加和删除事件:

如果将事件传递到适当的对象并从我的化简器中的对象构造对象,则将事件添加到日历可以正常工作:

case ADD_EVENT_TO_CURRENT_CALENDAR:
return state.updateIn(['events'], (events)=> events.add({
start: action.event.date,
end: action.event.date,
title: `${action.event.show.venue}`,
show: action.event.show,
boundActions: action.boundActions,
}));

事件上的 boundActions 之一是 removeEventFromCurrentCalendar 操作。在当前事件上调用它会在 reducer 中触发以下操作:

case REMOVE_EVENT_FROM_CURRENT_CALENDAR:
return state.updateIn(['events'], (events)=> {
events.delete(action.event);
});

action.event相当于ADD_EVENT...中指定的形式的当前事件,即:

    {
start,
end,
title,
show,
boundActions,
}

但是,它不是完全相同的同一对象,我猜测这会导致 .delete() 调用失败。

使用 immutable.js 从该集合中删除这个相似但不相同的对象的最佳方法是什么?

最佳答案

您可以使用Array.prototype.filter手动排除该对象。

arr.filter((item) => {
return item.start !== toDelete.start &&
item.end !== toDelete.start && ...etc
})

FWIW,如果数组中的每个项目都保留唯一的 ID,过滤起来会更容易。那么你只需要比较单个值而不是对象结构。

关于javascript - immutable.js:删除集合中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35150602/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com