我有這個陣列
let arr = [
{
"guid":1,
creationDateTime: 1632180639045,
"pricePerUnitPerHour": 5,
"awardedSavingCalculationStatus": 1,
divisible: true,
},
{
"guid":2,
creationDateTime: 2504091567119,
"pricePerUnitPerHour": 20,
"awardedSavingCalculationStatus": 1,
divisible: true,
},
{
"guid":3,
creationDateTime: 1504095567183,
"pricePerUnitPerHour": 5,
"awardedSavingCalculationStatus": 1,
divisible: true,
},
]
我需要按這三個屬性 pricePerUnitPerHour/divisible/and creationDateTime 進行升序排序
因此,例如,如果兩個物件在 pricePerUnitPerHour 中具有相等的值,那么排序應該是按可分屬性進行的。有 divisible:true 應該在我們有 divisible:false 的物件之前。
最后,如果它們有兩個相等的價格,則可分割屬性為真,例如排序應該基于時間戳 - creationDateTime
我試過的
我在 stackoverflow 上找到了一些答案,但他只按兩個欄位進行排序,但我找不到按第三個欄位排序的方法
arr.sort(
function (a, b) {
if (a.pricePerUnitPerHour === b.pricePerUnitPerHour) {
return b.divisible - a.divisible;
}
if(a.divisible === b.divisible) {
return new Date(a.creationDateTime) - new Date(b.creationDateTime)
}
return a.pricePerUnitPerHour > b.pricePerUnitPerHour ? 1 : -1;
});
如果價格和可分割的價格相同,則排序有效,然后按它們排序,但在 creationDateTime 上,它不是按升序排序
uj5u.com熱心網友回復:
let arr = [
{
"guid":1,
"creationDateTime": 1632180639045,
"pricePerUnitPerHour": 5,
"awardedSavingCalculationStatus": 1,
divisible: true,
},
{
"guid":2,
"creationDateTime": 2504091567119,
"pricePerUnitPerHour": 20,
"awardedSavingCalculationStatus": 1,
divisible: true,
},
{
"guid":3,
"creationDateTime": 1504095567183,
"pricePerUnitPerHour": 5,
"awardedSavingCalculationStatus": 1,
divisible: true,
},
]
arr.sort(function (a, b) {
return a.creationDateTime - b.creationDateTime;
});
arr.sort(function (a, b) {
return a.divisible - b.divisible;
});
arr.sort(function (a, b) {
return a.pricePerUnitPerHour - b.pricePerUnitPerHour;
});
console.log(arr);
uj5u.com熱心網友回復:
排序如下:
arr.sort(function(a, b) {
return a.pricePerUnitPerHour - b.pricePerUnitPerHour ||
-(a.divisible - b.divisible) ||
a.creationDateTime - b.creationDateTime;
});
如果兩個值相等 (doh),減法運算將回傳 0,在這種情況下,代碼將移至下一個比較。真/假情況需要反轉,因為您希望 1(真)在 0(假)之前排序。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/356433.html
標籤:javascript 数组 排序
上一篇:及時更改作業日索引
