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

如何使用Underscore.js按用户和日期分组数据并整理格式

使用Underscore.js按用户和日期分组数据解决方案

嘿,我来帮你搞定这个分组问题!先理清楚你的需求:你有一组包含用户、日期和时段的数据,需要用Underscore.js整理成用户名 - 日期 - 时段1 - 时段2 - 下一个日期 - 时段1 - 时段2这样的字符串格式。

原始数据

const rawData = [
  { "Name": "User1", "SlotStartDate": "05/16/2018", "SlotStartTime": "9:20AM" },
  { "Name": "User1", "SlotStartDate": "05/16/2018", "SlotStartTime": "10:20AM" },
  { "Name": "User1", "SlotStartDate": "05/17/2018", "SlotStartTime": "9:20AM" },
  { "Name": "User1", "SlotStartDate": "05/17/2018", "SlotStartTime": "10:20AM" },
  { "Name": "User2", "SlotStartDate": "05/16/2018", "SlotStartTime": "8:45AM" },
  { "Name": "User2", "SlotStartDate": "05/16/2018", "SlotStartTime": "9:25AM" },
  { "Name": "User2", "SlotStartDate": "05/17/2018", "SlotStartTime": "8:45AM" },
  { "Name": "User2", "SlotStartDate": "05/17/2018", "SlotStartTime": "9:25AM" }
];

期望输出格式

User1 - "05/16/2018" - "9:20AM" - "10:20AM" - "05/17/2018" - "9:20AM" - "10:20AM"
User2 - "05/16/2018" - "8:45AM" - "9:25AM" - "05/17/2018" - "8:45AM" - "9:25AM"

你现有代码的问题

你之前的代码是把用户名+日期作为分组key,得到的是每个用户+日期组合的时段集合,但没有进一步按用户层级整理,也没有拼接成目标字符串格式。

可行解决方案

我们可以分两步分组,再拼接成目标格式:

// 1. 先按用户名分组,把同一用户的所有数据归到一起
const groupedByUser = _.groupBy(rawData, 'Name');

// 2. 处理每个用户的分组数据,生成目标格式的字符串
const formattedResult = _.map(groupedByUser, (userSlots, userName) => {
  // 对当前用户的所有时段,再按日期分组
  const groupedByDate = _.groupBy(userSlots, 'SlotStartDate');
  
  // 把日期和对应的时段展开成一维数组(比如["05/16/2018", "9:20AM", "10:20AM"...])
  const dateTimeSequence = _.flatMap(groupedByDate, (slots, date) => {
    const times = _.pluck(slots, 'SlotStartTime');
    return [date, ...times];
  });
  
  // 把数组元素加上引号,用" - "连接,再拼接用户名
  return `${userName} - ${dateTimeSequence.map(item => `"${item}"`).join(' - ')}`;
});

// 输出最终结果,每行一个用户
console.log(formattedResult.join('\n'));

代码说明

  • 第一步分组:用_.groupBy(rawData, 'Name')把数据分成User1和User2两个大组,每个组里是该用户的所有时段数据。
  • 第二步分组:对每个用户组,再用_.groupBy按日期分组,得到该用户下不同日期的时段集合。
  • 展开与拼接:用_.flatMap把每个日期和对应的时段展开成一维数组,然后给每个元素加上引号,用-连接,最后加上用户名就得到了目标格式的字符串。
  • 输出结果:把所有用户的字符串用换行符连接,打印出来就是你想要的格式。

内容的提问来源于stack exchange,提问作者Andy P.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:03:58