在Node.js中从嵌套对象数组提取日期并将其设为键
Node.js 按日期分组数据实现方案
步骤说明
- 先修正原数据的语法错误(第三个对象末尾缺少逗号,否则会导致JS解析失败)。
- 使用
Array.reduce()方法按日期(YYYY-MM-DD部分)分组数据。 - 对分组后的日期键进行排序,保证输出顺序符合预期。
- 每组内按
id降序排列,匹配示例中的元素顺序。 - 拼接成目标格式的字符串输出。
完整代码
// 修正语法错误后的原始数据 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
相关产品推荐
相关产品推荐

