我想使用underscore.js以獲取tokenId下面散列陣列中每個的最高價格。我想這需要兩次遍歷陣列,但也許有更有效的方法。利用下劃線僅獲取一個以 為鍵的散列tokenId并選擇價格最高且整個陣列集迭代次數最少的散列的最佳方法是什么?
const data = [
{
"tokenId": 1,
"price": 1.8
},
{
"tokenId": 1,
"price": 2.0
},
{
"tokenId": 1,
"price": 1.9
},
{
"tokenId": 2,
"price": 5.0
},
{
"tokenId": 2,
"price": 1.0
},
{
"tokenId": 3,
"price": 1.9
}
]
// final result should be
// sortedFiltered = [{tokenId: 1, price: 2.0}, {tokenId: 2, price: 5.0}, {tokenId: 3, price: 1.9}]
uj5u.com熱心網友回復:
reduce 可以在一次迭代中完成。使用累加器保持由 tokenId 索引的最大價格值。
const data = [
{
"tokenId": 1,
"price": 1.8
},
{
"tokenId": 1,
"price": 2.0
},
{
"tokenId": 1,
"price": 1.9
},
{
"tokenId": 2,
"price": 5.0
},
{
"tokenId": 2,
"price": 1.0
},
{
"tokenId": 3,
"price": 1.9
}
]
// one iteration, with a custom function
const maxes = data.reduce((acc, o) => {
if (acc[o.tokenId] === undefined) acc[o.tokenId] = 0;
if (acc[o.tokenId] < o.price) acc[o.tokenId] = o.price;
return acc;
}, {});
console.log(maxes);
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/323886.html
標籤:javascript 排序 下划线.js
