获取具有相同值的键集

use*_*324 0 javascript arrays json

我有javascript对象数组:

objArray = [
  {"date":"07/19/2017 12:00:00 AM","count":"1000","code":"K100"},
  {"date":"07/21/2017 12:00:00 AM","count":"899","code":"C835"},
  {"date":"07/23/2017 12:00:00 AM","count":"700","code":"C837"},
  {"date":"07/23/2017 12:00:00 AM","count":"800","code":"K100"},
  {"date":"07/23/2017 12:00:00 AM","count":"50","code":"C837"}
];
Run Code Online (Sandbox Code Playgroud)

我希望得到关键日期的所有值具有与下面相同的值

  • 删除重复的日期值
  • 将代码值组合为数组
  • 总结重复日期值的计数值

这是预期的输出:

newObjArray = [
  {"date":"07/19/2017 12:00:00 AM","count":"1000","code":"K100"},
  {"date":"07/21/2017 12:00:00 AM","count":"899","code":"C835"},
  {"date":"07/23/2017 12:00:00 AM","count":"1550","code":["C837","K100","C837"]}
]
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的方式,但可以获得预期的输出.任何可以帮我处理我以获得所需输出的人.

Psi*_*dom 5

objArray = [
  {"date":"07/19/2017 12:00:00 AM","count":"1000","code":"K100"},
  {"date":"07/21/2017 12:00:00 AM","count":"899","code":"C835"},
  {"date":"07/23/2017 12:00:00 AM","count":"700","code":"C837"},
  {"date":"07/23/2017 12:00:00 AM","count":"800","code":"K100"},
  {"date":"07/23/2017 12:00:00 AM","count":"50","code":"C837"}
];


var objs = objArray.reduce((obj, rec) => {
  if (obj[rec.date] === undefined) {
    rec.code = [rec.code];
    rec.count = Number(rec.count);
    obj[rec.date] = rec;
  } else {
    obj[rec.date].count += Number(rec.count);
    obj[rec.date].code.push(rec.code);
  }
  return obj;
}, {}) 

console.log(Object.values(objs));
Run Code Online (Sandbox Code Playgroud)