You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Mustache模板中按日期对预订列表项分组?

按日期分组预订列表的Mustache实现方法

原始预订数据

[
  {
    Date: { S: '2024-04-10' },
    BookingID: { N: '3' },
    Room: { S: 'Pod1' }
  },
  {
    Date: { S: '2024-04-10' },
    BookingID: { N: '5' },
    Room: { S: 'Pod2' }
  },
  {
    Date: { S: '2024-05-13' },
    BookingID: { N: '2' },
    Room: { S: 'Pod3' }
  }
]

当前使用的Mustache遍历代码

{{#bookings}}
  <p>Date: {{date}}
  <p>ID: {{id}}
  <p>Room: {{room}}
{{/bookings}}

问题

现在已经能遍历展示所有预订,但不知道怎么按日期把同天的预订归到一组,请问Mustache模板要怎么写?必须用脚本处理吗?


解决方案:必须借助脚本预处理数据

Mustache是无逻辑模板引擎,本身不支持分组、排序这类数据处理操作,只能先通过脚本把原始数据转换成按日期分组好的结构,再传给模板渲染。

1. 用JavaScript预处理数据示例

先把原始数据整理成按日期分组的结构,同时把嵌套的字段(比如Date.S)扁平化,方便模板调用:

// 原始数据(假设已解析为JS对象数组)
const rawBookings = [
  { Date: { S: '2024-04-10' }, BookingID: { N: '3' }, Room: { S: 'Pod1' } },
  { Date: { S: '2024-04-10' }, BookingID: { N: '5' }, Room: { S: 'Pod2' } },
  { Date: { S: '2024-05-13' }, BookingID: { N: '2' }, Room: { S: 'Pod3' } }
];

// 按日期分组并扁平化字段
const groupedData = rawBookings.reduce((result, item) => {
  const date = item.Date.S;
  const booking = {
    id: item.BookingID.N,
    room: item.Room.S
  };
  if (!result[date]) {
    result[date] = [];
  }
  result[date].push(booking);
  return result;
}, {});

// 转成模板易处理的数组格式
const templateData = {
  dateGroups: Object.entries(groupedData).map(([date, bookings]) => ({
    date,
    bookings
  }))
};

处理后templateData的结构是这样的:

{
  dateGroups: [
    {
      date: '2024-04-10',
      bookings: [
        { id: '3', room: 'Pod1' },
        { id: '5', room: 'Pod2' }
      ]
    },
    {
      date: '2024-05-13',
      bookings: [
        { id: '2', room: 'Pod3' }
      ]
    }
  ]
}

2. 对应的Mustache模板

现在就可以先遍历日期分组,再遍历每组内的预订项:

{{#dateGroups}}
  <h3>日期:{{date}}</h3>
  <div class="booking-group">
    {{#bookings}}
      <p>预订ID:{{id}} | 房间:{{room}}</p>
    {{/bookings}}
  </div>
{{/dateGroups}}

内容的提问来源于stack exchange,提问作者mayo09876

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 23:31:22