按工作日(例如,星期一、星期二、星期三...)对日程表进行排序

Sort Schedule Order by Week Day (e.g Monday, Tuesday, Wednesday...)

我正在尝试解决我的代码中的问题。我有一个硬编码的状态数据,假设它来自 API 调用。默认情况下,operationHours 的 API 数据未正确排序,在我的情况下,星期四排在第一位而不是星期一。我的问题是,每当我映射数据时,我都想按星期几(星期一、星期二、星期三……)对它们进行排序。我在这里做了一个沙箱https://codesandbox.io/s/crazy-booth-4gwfi

class App extends Component {
  state = {
    data: {
      name: "Starbucks",
      operationHours: {
        thursday: { from: "8:00", to: "20:00" },
        friday: { from: "8:00", to: "20:00" },
        saturday: { from: "8:00", to: "20:00" },
        sunday: { from: "8:00", to: "20:00" },
        monday: { from: "8:00", to: "20:00" },
        tuesday: { from: "8:00", to: "20:00" },
        wednesday: { from: "8:00", to: "20:00" }
      }
    }
  };
  render() {
    return (
      <div>
        <h2>{this.state.data.name}</h2>
        {Object.keys(this.state.data.operationHours).map(dayOfWeek => (
          <div key={dayOfWeek} className="day-of-week">
            {`${dayOfWeek} - ${moment(
              this.state.data.operationHours[dayOfWeek].from,
              "HH:mm"
            ).format("hh:mm A")} -
            ${moment(
              this.state.data.operationHours[dayOfWeek].to,
              "HH:mm"
            ).format("hh:mm A")}`}
          </div>
        ))}
      </div>
    );
  }
}

而不是

{Object.keys(this.state.data.operationHours).map(dayOfWeek => (
      <div key={dayOfWeek} className="day-of-week">

取一个按日期排序的数组,例如

{['monday', 'tuesday', 'wednesday'].map(dayOfWeek => (
      <div key={dayOfWeek} className="day-of-week">