2017-02-16 176 views
1

我有一些基於平日數據如下:如何基於任意對象值對數組進行排序?

[{ 
    "dayOfWeek": "TUESDAY", 
    "startTime": "19:30:00", 
    "endTime": "21:15:00" 
}, { 
    "dayOfWeek": "SATURDAY", 
    "startTime": "19:15:00", 
    "endTime": "21:00:00" 
}, { 
    "dayOfWeek": "FRIDAY", 
    "startTime": "19:00:00", 
    "endTime": "20:15:00" 
}, { 
    "dayOfWeek": "THURSDAY", 
    "startTime": "19:15:00", 
    "endTime": "20:30:00" 
}, { 
    "dayOfWeek": "WEDNESDAY", 
    "startTime": "19:30:00", 
    "endTime": "20:45:00" 
}, { 
    "dayOfWeek": "SUNDAY", 
    "startTime": "19:30:00", 
    "endTime": "20:45:00" 
}, { 
    "dayOfWeek": "MONDAY", 
    "startTime": "19:30:00", 
    "endTime": "21:00:00" 
}] 

然而,這種數據來自具有不規則分選的API,其不能被信任。我需要將這個數組從MONDAY到SUNDAY的值遞減。我怎樣才能做到這一點?我假設我必須設置某種地圖進行查找?

+1

右鍵,創建一個對象,它的鍵是當日的名稱和它的值是0〜6(或1至7或任何你想要的),然後使用你的'的.sort( )'比較器功能。 – Pointy

+0

查看我標記爲@Pointy提到的內容的副本 –

+1

實際上,此副本更符合您的需求:http://stackoverflow.com/questions/34066752/sort-object-of-weekdays-like-sunday-monday -星期六 –

回答

1

您可以使用一個對象,使用日期和值進行排序。

var array = [{ dayOfWeek: "TUESDAY", startTime: "19:30:00", endTime: "21:15:00" }, { dayOfWeek: "SATURDAY", startTime: "19:15:00", endTime: "21:00:00" }, { dayOfWeek: "FRIDAY", startTime: "19:00:00", endTime: "20:15:00" }, { dayOfWeek: "THURSDAY", startTime: "19:15:00", endTime: "20:30:00" }, { dayOfWeek: "WEDNESDAY", startTime: "19:30:00", endTime: "20:45:00" }, { dayOfWeek: "SUNDAY", startTime: "19:30:00", endTime: "20:45:00" }, { dayOfWeek: "MONDAY", startTime: "19:30:00", endTime: "21:00:00" }]; 
 

 
array.sort(function (a, b) { 
 
    var sort = { MONDAY: 1, TUESDAY: 2, WEDNESDAY: 3, THURSDAY: 4, FRIDAY: 5, SATURDAY: 6, SUNDAY: 7 }; 
 
    return sort[a.dayOfWeek] - sort[b.dayOfWeek]; 
 
}); 
 

 
console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }

相關問題