You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用underscore.js排序过滤哈希数组,提取每个tokenId的最高价格条目

实现方案

最优效率方案(仅1次遍历)

使用underscore的_.reduce方法仅需遍历原数组1次即可完成筛选,时间复杂度为O(n),是理论上的最优效率(无法做到比遍历所有元素更少的次数):

const sortedFiltered = _.reduce(data, (result, current) => {
  const existItem = _.find(result, { tokenId: current.tokenId });
  if (!existItem) {
    result.push(current);
  } else if (current.price > existItem.price) {
    existItem.price = current.price;
  }
  return result;
}, []);

高可读性方案(线性时间复杂度)

如果优先考虑代码可维护性,可使用分组取最大值的组合写法,整体时间复杂度同样为线性,仅多了分组的中间内存开销,常规业务场景下性能差异可忽略:

const sortedFiltered = _.chain(data)
  // 按tokenId分组
  .groupBy('tokenId')
  // 每个分组取价格最高的条目
  .map(group => _.maxBy(group, 'price'))
  .value();

两种方案最终输出均符合预期要求。

内容的提问来源于stack exchange,提问作者randombits

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 15:27:03