怎么取相同时间段算出总数

var date= ['11-28','11-29','11-30'];
var sum = [];
var arr = [
    { 
        count: 8,
        date: '11-28'
    },
    { 
        count: 5,
        date: '11-29'
    },
    { 
        count: 18,
        date: '11-29'
    },
    { 
        count: 12,
        date: '11-30'
    }
];
...
...
console.log(sum) // [8,23,12]

想实现的需求的过滤掉arr重复的时间段,并且count相加。

阅读 2.4k
3 个回答

你要保证date的顺序
然后两个循环

    for (var i = 0; i < arr.length; i++) {
      var tmp = arr[i].count;
      for (var j = i + 1; j < arr.length; j++) {
        if (arr[i].date == arr[j].date) {
          tmp += arr[j].count;
          i++;
        }
      }
      sum.push(tmp);
    }
    console.log(sum)

不是一两个循环能解决的事吗

var date= ['11-28','11-29','11-30'];
var sum = {};
var arr = [
    { 
        count: 8,
        date: '11-28'
    },
    { 
        count: 5,
        date: '11-29'
    },
    { 
        count: 18,
        date: '11-29'
    },
    { 
        count: 12,
        date: '11-30'
    }
];


for(let arr_item of arr){
  if(sum[arr_item.date] == undefined){
    sum[arr_item.date] = arr_item.count;
  }else{
    sum[arr_item.date] += arr_item.count;
  }
}


console.log(sum);
//输出 {11-28: 8, 11-29: 23, 11-30: 12}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题