let array = [
{
"vendorBidId": null,
"participantName": "test [email protected]",
"bidAmount": 0,
"productionRate": null,
"bidTime": null,
"isYou": false,
"awarded": false
},
{
"vendorBidId": 16,
"participantName": "test [email protected]",
"bidAmount": 131,
"productionRate": 131,
"bidTime": "2021-09-18T08:11:21.295",
"isYou": true,
"awarded": false
},
{
"vendorBidId": 20,
"participantName": "[email protected]",
"bidAmount": 30,
"productionRate": 30,
"bidTime": "2021-0a-18T08:11:21.295",
"isYou": true,
"awarded": false
},
{
"vendorBidId": 30,
"participantName": "[email protected]",
"bidAmount": 40,
"productionRate": 40,
"bidTime": "2021-0a-18T08:11:21.295",
"isYou": true,
"awarded": false
},
{
"vendorBidId": null,
"participantName": "test [email protected]",
"bidAmount": 0,
"productionRate": null,
"bidTime": null,
"isYou": false,
"awarded": false
},
{
"vendorBidId": 40,
"participantName": "[email protected]",
"bidAmount": 50,
"productionRate": 50,
"bidTime": "2021-0a-18T08:11:21.295",
"isYou": true,
"awarded": false
}
]
我想按升序(bidAmount)對這個陣列進行排序,如果 vendorBidId 為空,則不要排序保留在底部。
我試過這樣
array.sort((a,b) => parseFloat(a.bidAmount) - parseFloat(b.bidAmount)).map((ele) => console.log(ele.bidAmount))
我需要一個像 30,40,50,131,0,0 這樣的輸出,但對于我上面的代碼,它只會排序。我嘗試使用 reduce 但這不能正常作業
uj5u.com熱心網友回復:
- 根據 vendorBidId 是否為 null 來分隔您的陣列。
- 對要排序的部分進行排序
- 連接另一個陣列。
uj5u.com熱心網友回復:
array.sort((a,b) => {
const n = a.vendorBidId === null ? Number.MAX_VALUE : a.bidAmount;
const m = b.vendorBidId === null ? Number.MAX_VALUE : b.bidAmount;
return n - m;
});
// "2.5" "3.5" = "2.53.5"
// "2.5" - "3.5" = -1
uj5u.com熱心網友回復:
以 DragatS 共享的內容為基礎......只需像這樣映射 sort() 的結果即可得到 [30,40,50,131,0,0] 的結果
const res = array
.sort((a, b) => {
const n = a.vendorBidId === null ? Number.MAX_VALUE : a.bidAmount;
const m = b.vendorBidId === null ? Number.MAX_VALUE : b.bidAmount;
return n - m;
})
.map(item => item.bidAmount);
console.log(res);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/321515.html
標籤:javascript 数组 排序
上一篇:如何用零填充剩余的位置
下一篇:嘗試僅在此陣列方法中列印特定數字
