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

如何对API返回的JSON数据按日期倒序排序并仅显示前三条?

实现步骤详解

没问题,咱们一步步来搞定这个需求!核心思路是:先通过AJAX拿到数据,把对象转成可排序的数组,按日期倒序排列后取前3条,最后渲染到页面上。

1. 用原生AJAX(Fetch API)实现

Fetch是现代浏览器原生支持的AJAX方案,代码简洁易懂:

// 发起请求获取JSON数据
fetch('你的API接口地址')
  .then(response => response.json())
  .then(data => {
    // 把beds对象转成数组——因为JS对象的键值对顺序不固定,必须转数组才能排序
    const bedsArray = Object.entries(data.beds).map(([key, bedInfo]) => {
      // 保留原有的品牌键名(比如casper、tuft),同时整合其他信息
      return {
        brand: key,
        ...bedInfo
      };
    });

    // 按orderDate倒序排序(最新日期优先)
    // 注意:必须把日期字符串转成Date对象再比较,避免字符串排序的坑
    const sortedBeds = bedsArray.sort((a, b) => {
      return new Date(b.orderDate) - new Date(a.orderDate);
    });

    // 截取前3条数据
    const top3Beds = sortedBeds.slice(0, 3);

    // 渲染到页面(示例插入到id为bed-container的容器中)
    const container = document.getElementById('bed-container');
    top3Beds.forEach(bed => {
      const item = document.createElement('div');
      item.innerHTML = `
        <h3>${bed.name}(品牌:${bed.brand})</h3>
        <p>${bed.description}</p>
        <small>下单日期:${bed.orderDate}</small>
      `;
      container.appendChild(item);
    });
  })
  .catch(error => console.error('请求出错啦:', error));

2. 如果你用jQuery的AJAX

如果项目里已经引入了jQuery,也可以这么写:

$.ajax({
  url: '你的API接口地址',
  dataType: 'json',
  success: function(data) {
    // 转成可排序的数组
    const bedsArray = $.map(data.beds, (bedInfo, brand) => {
      return { brand, ...bedInfo };
    });

    // 按日期倒序排序
    const sortedBeds = bedsArray.sort((a, b) => {
      return new Date(b.orderDate) - new Date(a.orderDate);
    });

    // 取前3条并渲染
    const top3Beds = sortedBeds.slice(0, 3);
    const $container = $('#bed-container');
    top3Beds.forEach(bed => {
      $container.append(`
        <div>
          <h3>${bed.name}(品牌:${bed.brand})</h3>
          <p>${bed.description}</p>
          <small>下单日期:${bed.orderDate}</small>
        </div>
      `);
    });
  },
  error: function(xhr, status, error) {
    console.error('请求失败:', error);
  }
});

关键细节提醒

  • 对象转数组:JSON里的beds是对象,JS里对象的键值对顺序不被保证,所以必须转成数组才能进行可靠排序。
  • 日期排序的坑:直接用字符串比较orderDate会出错(比如12/31/2017字符串比01/01/2018大,但实际日期更早),一定要转成Date对象再做减法比较。
  • 渲染自定义:你可以根据自己的页面结构调整渲染的HTML,比如用<ul>/<li>列表代替<div>,或者添加样式类美化显示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:53:04