javascript - Lodash groupby 对象并组合数组

标签 javascript lodash

我的日历数据看起来像

[ 
  { 
    date: 1488128400000,
      details: [ 
        { time: '01.00 - 02.00', title: 'go sleep' } 
      ] 
  },
  { 
    date: 1488128400000,    
      details: [ 
        { time: '05.30 - 06.30', title: 'wakeup' } 
      ]
  },
  { 
    date: 1488301200000,
      details: [ 
        { time: '09.00 - 10.00', title: 'go to school' } 
    ]   
  } 
]

我想对相同的日期进行分组并合并每个详细信息数组,如下所示

[ 
  { 
    date: 1488128400000,
      details: [ 
        { time: '01.00 - 02.00', title: 'go sleep' },
        { time: '05.30 - 06.30', title: 'wakeup' } 
      ] 
  },
  { 
    date: 1488301200000,
      details: [ 
        { time: '09.00 - 10.00', title: 'go to school' } 
    ]   
  } 
]

我可以用Lodash解决这个问题吗?

我刚学了Lodash,不知道这个案例,也不知道搜索这个案例的关键词。

谢谢

最佳答案

您不需要使用lodash。以下实现了您想要做的事情。尽管您可能需要一些填充,具体取决于您所需的浏览器支持。 https://jsbin.com/sojarabiqi/edit?js,console

const events = [ 
  { 
    date: 1488128400000,
    details: [ 
      { time: '01.00 - 02.00', title: 'go sleep' } 
    ] 
  },
  { 
    date: 1488128400000,    
    details: [ 
      { time: '05.30 - 06.30', title: 'wakeup' } 
    ]
  },
  { 
    date: 1488301200000,
    details: [ 
      { time: '09.00 - 10.00', title: 'go to school' } 
    ]   
  } 
];

const grouped = events.reduce(function (grouped, event) {
  // Attempt to find existing grouped date
  const index = grouped.findIndex(function (date) {
    return date.date === event.date;
  });

  // Append event details to existing date 
  if (index !== -1) {
    grouped[index]['details'].push(event.details[0]);
  }
  // Append event details to new date
  else {
    grouped.push(event);
  }  

  return grouped;
}, []);

console.log(grouped);

关于javascript - Lodash groupby 对象并组合数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43060726/

相关文章:

javascript - 按 Javascript 键合并两个对象(不覆盖不同的值)

javascript - 后退按钮、Chrome 和 DOM 更新存在严重问题

javascript - NodeJS 和 Javascript (requirejs) 依赖注入(inject)

javascript - 遍历数组以找到具有匹配 ID 的所有对象,并将这些对象合并到数组中的一个元素中。

javascript - lodash如何测试该对象被分配

javascript - Lodash uniqWith,怎么说lodash keep last duplicate

javascript - 如何在回调中停止执行外部函数

javascript - 如何将非常大的算法盟友正确规范化为相对较小的数字范围?

javascript - 如何从 SAPUI5 中的 REST 端点获取模型

javascript - 从对象中删除属性而不创建新属性(无删除操作)