首页 > 解决方案 > 我如何根据日期(或任何元素相似的元素)在javascript中合并数组中的两个元素

问题描述

我当前的数组看起来像这样

array = [
 {
  date: '2020/06/12',
  hours: 8.4
 },
 {
  date: '2020/06/15',
  hours: 4.5
 },
 {
  date: '2020/06/12',
  hours: 3.8
 },
 {
  date: '2020/06/16',
  hours: 5.5
 },
]

所以整个想法是总结和过滤那些重复的日子,就像上面的数组一样,第 12 天是重复的,所以我们对小时求和,结果应该是这样的

array = [
 {
  date: '2020/06/12',
  hours: 12.2
 },
 {
  date: '2020/06/15',
  hours: 4.5
 },
 {
  date: '2020/06/16',
  hours: 5.5
 },
]

标签: javascriptarrayslodash

解决方案


您可以使用减速器:

const result = array.reduce((acc, cur) => {
   const prev = acc.find(elem => elem.date === cur.date);
    if(prev) {
        prev.hours += cur.hours;
    } 
    else {
        acc.push(cur);
    }
    return acc;
}
, []);

推荐阅读