gpt4 book ai didi

javascript - 使用 lodash 进行管道过滤和处理

转载 作者:行者123 更新时间:2023-11-30 00:23:33 25 4
gpt4 key购买 nike

我有以下 lodash 伪代码,它将处理拍卖:

var auctions = [{'item': 12345, ...}, {'item': 12345, ...}, {'item':23436, ...}];

var process = function(auctions) {
_(auctions)
.groupBy('item')
.thru(processSpecialItems)
.each(processCommonItems)
.value();
}

每个函数都依赖于前一个函数的结果,但在 processSpecialItemsprocessCommonItems 的情况下:

  • 仅特定的 item,即。由给定的 item 值标识的组将由 processSpecialItems 处理。
  • 只有那些尚未处理的组才应继续processCommonItems
  • 这些操作是 CPU 密集型操作,涉及数据库访问。

问题:

  • 如何筛选、处理这些特殊项目,然后退回其余项目?最好使用尽可能少的遍数,因为 data 包含超过 40,000 个项目。
  • 在性能方面,使用同步迭代是否可以接受?此代码段最多可执行 400 次(全部同时执行)。

最佳答案

假设您能够提前确定哪些项目组将由 processSpecialItems 处理,这可能是 _.partition 的工作。

来自docs :

Creates an array of elements split into two groups, the first of which contains elements predicate returns truthy for, the second of which contains elements predicate returns falsey for.

_.partition(auctions, isSpecial) 将返回 [specialItems, commonItems](其中 specialItemscommonItems 是适当的项目数组)。然后,您可以只让 processSpecialItems 对第一个元素进行操作,让 processCommonItems 对第二个元素进行操作。

关于javascript - 使用 lodash 进行管道过滤和处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32275289/

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