【发布时间】:2017-04-06 12:18:15
【问题描述】:
我有两个循环,一个用于一个月中的每一天,另一个用于本月的所有事件。假设我有 100 000 个事件。
我正在寻找一种方法从主要事件List 中删除事件,一旦它们被“消耗”。
代码是这样的:
const calendarRange = [{initialDate}, {initialDate}, {initialDate}, {initialDate}, ...] // say we have 30 dates, one for each day
const events = fromJS([{initialDate}, {initialDate}, {initialDate}, ...]) // let's say we have 100 000
calendarRange.map((day) => {
const dayEvents = events.filter((event) => day.get('initialDate').isSame(event.get('initialDate'), 'day')) // we get all events for each day
doSomeThingWithDays(dayEvents)
// how could I subtract `dayEvents` from `events` in a way
// the next celandarRange iteration we have less events to filter?
// the order of the first loop must be preserved (because it's from day 1 to day 3{01}])
}
使用 lodash 我可以做类似的事情:
calendarRange.map((day) => {
const dayEvents = events.filter((event) => day.get('initialDate').isSame(event.get('initialDate'), 'day')) // we get all events for each day
doSomeThingWithDays(dayEvents)
pullAllWith(events, dayEvents, (a, b) => a === b)
}
如何用 immutablejs 完成同样的优化?我并不是真的期待我的迭代列表方式的解决方案,而是一种智能的方式来减少事件List,使其变得越来越小..
【问题讨论】:
标签: javascript optimization logic immutable.js