【发布时间】:2021-10-30 18:16:43
【问题描述】:
我有以下数组:
[
{
baseAsset: 'XRP',
quoteAsset: 'ETH',
quoteAssetPrecision: 6,
baseAssetPrecision: 8,
price: '0.00025170'
},
{
baseAsset: 'MOD',
quoteAsset: 'BTC',
quoteAssetPrecision: 8,
baseAssetPrecision: 4,
price: '0.00004280'
},
{
baseAsset: 'MOD',
quoteAsset: 'ETH',
quoteAssetPrecision: 8,
baseAssetPrecision: 4,
price: '0.00116700'
},
{
baseAsset: 'ENJ',
quoteAsset: 'BTC',
quoteAssetPrecision: 8,
baseAssetPrecision: 8,
price: '0.00004508'
},
{
baseAsset: 'ENJ',
quoteAsset: 'ETH',
quoteAssetPrecision: 6,
baseAssetPrecision: 8,
price: '0.00064370'
},
{
baseAsset: 'STORJ',
quoteAsset: 'BTC',
quoteAssetPrecision: 8,
baseAssetPrecision: 8,
price: '0.00002090'
},
{
baseAsset: 'STORJ',
quoteAsset: 'ETH',
quoteAssetPrecision: 6,
baseAssetPrecision: 8,
price: '0.00029910'
}
]
我想得到什么:
[
{
ticker: 'XRP',
precision: 8,
},
{
ticker: 'MOD',
precision: 4,
},
{
ticker: 'BTC',
precision: 8,
},
{
ticker: 'ENJ',
precision: 8,
},
{
ticker: 'STORJ',
precision: 8,
},
{
ticker: 'ETH',
precision: 6,
}
]
如您所见,每个 precision 道具都与资产相关联,并且不会更改。我想从我的货币对数组中提取每种货币及其precision。通过lodash 可以提供什么优雅的解决方案?接受其他选项。我试图使用本机 javascript 来实现这一点,但解决方案并不让我满意:
const currenciesFetched = tradingPairsWithPrices
.flatMap((pair) => [
{
ticker: pair.baseAsset,
precision: pair.baseAssetPrecision,
},
{
ticker: pair.quoteAsset,
precision: pair.quoteAssetPrecision,
},
])
.filter((v, i, a) => {
return a.findIndex((t) => t.ticker === v.ticker) === i
})
有什么想法吗?
【问题讨论】:
-
是的,在这种情况下,我只是将一个数组拆分为 2 个对象(第一个对象是
baseAsset,第二个对象是quoteAsset),其中包含ticker和关联的precision属性。然后我只需通过ticker属性过滤我的新对象数组。 -
不确定我是否理解
.filter()背后的逻辑(因此也可能会误解所需的结果)。它只是为了每个ticker(取第一个元素)只留下一个条目吗?还是别的什么? -
是的,你是对的
标签: javascript lodash