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

如何从对象数组提取资产精度属性生成新数组,有哪些Lodash实现方案?

Lodash 实现方案

直接结合_.flatMap拍平数组,再用_.uniqBy按ticker字段去重即可,代码简洁易读:

const currenciesFetched = _.uniqBy(
  _.flatMap(tradingPairsWithPrices, pair => [
    { ticker: pair.baseAsset, precision: pair.baseAssetPrecision },
    { ticker: pair.quoteAsset, precision: pair.quoteAssetPrecision }
  ]),
  'ticker'
)

因为同个币种的精度是固定的,_.uniqBy会保留第一个出现的币种条目,完全符合需求。

原生JS 优化实现方案

如果你不想引入Lodash依赖,也可以用Map实现O(n)时间复杂度的去重,比原有filter + findIndex的O(n²)复杂度性能更好,适合交易对数量较多的场景:

const currencyMap = new Map()
tradingPairsWithPrices.forEach(pair => {
  // 未记录的币种才存入Map
  if (!currencyMap.has(pair.baseAsset)) {
    currencyMap.set(pair.baseAsset, pair.baseAssetPrecision)
  }
  if (!currencyMap.has(pair.quoteAsset)) {
    currencyMap.set(pair.quoteAsset, pair.quoteAssetPrecision)
  }
})
// 转换为目标格式数组
const currenciesFetched = Array.from(currencyMap, ([ticker, precision]) => ({ ticker, precision }))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 07:09:07