如何基于任意对象值对数组进行排序?
问题描述:
我有一些基于平日数据如下:如何基于任意对象值对数组进行排序?
[{
"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的值递减。我怎样才能做到这一点?我假设我必须设置某种地图进行查找?
答
您可以使用一个对象,使用日期和值进行排序。
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; }
右键,创建一个对象,它的键是当日的名称和它的值是0〜6(或1至7或任何你想要的),然后使用你的'的.sort( )'比较器功能。 – Pointy
查看我标记为@Pointy提到的内容的副本 –
实际上,此副本更符合您的需求:http://stackoverflow.com/questions/34066752/sort-object-of-weekdays-like-sunday-monday -星期六 –