【问题标题】:How to sort an array based on arbitrary object values? [duplicate]如何根据任意对象值对数组进行排序? [复制]
【发布时间】:2017-02-16 14:22:01
【问题描述】:

我有一些基于工作日的数据如下:

[{
    "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 的值降序排列这个数组。我怎样才能做到这一点?我假设我必须设置某种地图进行查找?

【问题讨论】:

  • 对,创建一个对象,其键是日期名称,值是 0 到 6(或 1 到 7 或任何你想要的),然后在你的 .sort() 比较器函数中使用它。跨度>
  • 查看我标记的副本以获取@Pointy 提到的示例
  • 其实这个副本更适合你的需求:stackoverflow.com/questions/34066752/…

标签: javascript jquery arrays sorting time


【解决方案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; }

【讨论】:

    猜你喜欢
    • 2021-12-09
    • 2013-11-25
    • 1970-01-01
    • 2021-07-14
    • 2014-05-29
    • 2020-01-31
    • 1970-01-01
    • 1970-01-01
    • 2013-02-24
    相关资源
    最近更新 更多