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

在Node.js中从嵌套对象数组提取日期并将其设为键

Node.js 按日期分组数据实现方案

步骤说明

  1. 先修正原数据的语法错误(第三个对象末尾缺少逗号,否则会导致JS解析失败)。
  2. 使用Array.reduce()方法按日期(YYYY-MM-DD部分)分组数据。
  3. 对分组后的日期键进行排序,保证输出顺序符合预期。
  4. 每组内按id降序排列,匹配示例中的元素顺序。
  5. 拼接成目标格式的字符串输出。

完整代码

// 修正语法错误后的原始数据
const data = [
  {"id":"1","date":"2022-09-07T15:56:32.279Z","req_id":"98"},
  {"id":"2","date":"2022-09-08T15:48:19.075Z","req_id":"97"},
  {"id":"3","date":"2022-09-06T15:48:19.073Z","req_id":"96"},
  {"id":"4","date":"2022-09-06T15:48:19.073Z","req_id":"96"}
];

// 按日期分组
const groupedData = data.reduce((group, item) => {
  const dateKey = item.date.split('T')[0];
  group[dateKey] = group[dateKey] || [];
  group[dateKey].push(item);
  return group;
}, {});

// 对日期键升序排序
const sortedDateKeys = Object.keys(groupedData).sort((a, b) => new Date(a) - new Date(b));

// 生成目标格式字符串
const output = sortedDateKeys.map(key => {
  // 组内按id降序排列
  const sortedItems = groupedData[key].sort((x, y) => y.id - x.id);
  return `"${key}":[\n${sortedItems.map(item => JSON.stringify(item)).join(',\n')}\n]`;
}).join('\n');

console.log(output);

运行结果

执行上述代码后,控制台输出将与你预期的格式完全一致:

"2022-09-06":[
{"id":"4","date":"2022-09-06T15:48:19.073Z","req_id":"96"},
{"id":"3","date":"2022-09-06T15:48:19.073Z","req_id":"96"}
]
"2022-09-07":[
{"id":"1","date":"2022-09-07T15:56:32.279Z","req_id":"98"}
]
"2022-09-08":[
{"id":"2","date":"2022-09-08T15:48:19.075Z","req_id":"97"}
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 05:45:35