我有一個這樣的物件陣列:
var values = [
{
"price": 10,
"amount": 2
}, {
"price": 10,
"amount": 2
}, {
"price": 5,
"amount": 3
}, {
"price": 15,
"amount": 5
}
];
如何按“價格”值對其進行排序,當“價格”相同時,我將“金額”值相加,因此結果如下:
var values = [
{
"price": 5,
"amount": 3
}, {
"price": 10,
"amount": 4
}, {
"price": 15,
"amount": 5
}
];
我可以使用以下方法對其進行排序:
values.sort((a, b) => a.price - b.price);
但是我不知道在價格相等的情況下如何計算金額。
uj5u.com熱心網友回復:
您可以獲取一個物件并從中獲取值。
const
values = [{ price: 10, amount: 2 }, { price: 10, amount: 2 }, { price: 5, amount: 3 }, { price: 15, amount: 5 }],
grouped = Object.values(values.reduce((r, { price, amount }) => {
r[price] ??= { price, amount: 0 };
r[price].amount = amount;
return r;
}, {}));
console.log(grouped);
.as-console-wrapper { max-height: 100% !important; top: 0; }
uj5u.com熱心網友回復:
可能不是最有效但最具表現力的:
[...new Set(values.map(({price}) => price))]
.sort((a, b) => a - b)
.map((p) => values
.filter(({price}) => p === price)
.reduce((t, e) => {
t.amount = e.amount;
return t;
}, {price: p, amount: 0}));
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/456426.html
標籤:javascript 数组
下一篇:每2列切片矩陣
