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

如何使用Jquery/JS按日期重新排序JSON对象,实现最新订单优先?

嘿,我来帮你搞定这个JSON产品排序的问题!要实现把最新下单的产品排在最前面的需求,我们可以按以下步骤操作:

解决方案:按下单时间对JSON产品排序

首先得明确:原生JSON对象本身是无序的(ES6之前甚至不保证键的存储顺序),所以我们需要先把产品转换成数组来处理排序,之后如果需要的话再转回对象。

步骤1:补全并整理原始数据

你提供的原始数据里product2的orderDate字段缺失了,我先根据目标排序顺序(product2→product3→product1)补全了日期信息,方便后续演示:

const rawData = {
  "candyResponse": {
    "product1": {
      "displayName": "Bubble Gum",
      "imageURL": "https://dummyimage.com/200x200/000/ffffff.png&text=prod1?$146$",
      "orderDate": { "time": "11/03/2018" }
    },
    "product2": {
      "displayName": "Chocolate",
      "imageURL": "https://dummyimage.com/200x200/0...",
      "orderDate": { "time": "05/12/2024" } // 最新日期
    },
    "product3": {
      "displayName": "Lollipop",
      "imageURL": "https://dummyimage.com/200x200/0...",
      "orderDate": { "time": "01/01/2024" } // 中间日期
    }
  }
};

步骤2:将产品转换为可排序的数组

把对象里的产品提取成包含产品标识和完整信息的数组,这样才能进行排序操作:

// 转换成[{ key: 'productX', ...产品信息 }, ...]的格式
const productsArray = Object.entries(rawData.candyResponse).map(([key, info]) => ({
  key,
  ...info
}));

步骤3:按下单日期从新到旧排序

我们需要把日期字符串转换成可比较的Date对象,再进行降序排序:

productsArray.sort((a, b) => {
  // 把MM/DD/YYYY格式转成YYYY-MM-DD,让Date能正确解析
  const parseDate = dateStr => new Date(dateStr.split('/').reverse().join('-'));
  const dateA = parseDate(a.orderDate.time);
  const dateB = parseDate(b.orderDate.time);
  return dateB - dateA; // 降序排序,最新的在前
});

步骤4:获取最终结果

现在productsArray就是按要求排序好的列表了。如果需要转回对象(现代浏览器/Node.js会保留插入顺序),可以用下面的代码:

const sortedProducts = Object.fromEntries(
  productsArray.map(item => [item.key, {
    displayName: item.displayName,
    imageURL: item.imageURL,
    orderDate: item.orderDate
  }])
);

// 打印结果就能看到product2、product3、product1的顺序
console.log(sortedProducts);

小提示

  • 如果有产品缺失orderDate字段,你可以在排序函数里加兼容逻辑,比如把这类产品放到最后;
  • 日期格式如果不是MM/DD/YYYY,要调整解析逻辑哦。

内容的提问来源于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:51:54