I have an array of objects that is like this:
var array = [
{minutes: 45, hours: 4, meridiem: "PM"},
{minutes: 00, hours: 8, meridiem: "AM"},
{minutes: 45, hours: 8, meridiem: "AM"},
{minutes: 30, hours: 3, meridiem: "PM"},
{minutes: 15, hours: 11, meridiem: "AM"},
{minutes: 00, hours: 1, meridiem: "PM"}
]
Essentially I need to sort by time, earliest first. So by AM/PM then by hours and then by minutes if hours and meridiem are equal.
Here is what I've tried
this.currentTours.sort(function(a,b) {
if (a.meridiem != b.meridiem) {
return 1
}
if ((a.dateR.meridiem == b.dateR.meridiem) && a.dateR.hours !=
b.dateR.hours) {
return 1
}
if (((a.dateR.meridiem == b.dateR.meridiem) && a.dateR.hours !=
b.dateR.hours) && a.dateR.minutes != b.dateR.minutes) {
return 1
}
return a.dateR.meridiem - b.dateR.meridiem
})
Getting past 1 layer of properties is where I get stuck.
{minutes: 45, hours: 4, meridiem: "PM"}is 1645 while{minutes: 17, hours: 9, meridiem: "AM"}is 945. Sorting that is trivial. An example with, say,{name:"Fred", age:27, country:"GBR"}where you want to sort by Country, then Age, then Name doesn't raise "Why don't you just X?" questions.