如何在javascript中合并具有相同键的对象?

如何在javascript中合并具有相同键的对象?,javascript,arrays,object,foreach,merge,Javascript,Arrays,Object,Foreach,Merge,我有一个名为commondata commondata = [{ giverUser: 'Abc', createdAt: '2016 11: 48: 40', note: 'Test' }, { giverUser: 'Xyz', createdAt: '12: 22: 37', note: 'Test data' }, { giverUser: 'Abc', createdAt: '2016 14: 22: 07', note: '"

我有一个名为
commondata

commondata = [{
   giverUser: 'Abc',
   createdAt: '2016 11: 48: 40',
   note: 'Test'
 }, {
   giverUser: 'Xyz',
   createdAt: '12: 22: 37',
   note: 'Test data'
 }, {
   giverUser: 'Abc',
   createdAt: '2016 14: 22: 07',
   note: '"test123"'
 }];
当我试图将上面的对象数组与下面的代码合并时,我得到的数组与原来的相同

下面是我的代码:

commondata.forEach(function(a, i) {

  if (!this[a.giverUser]) {

    this[a.giveruser] = {
      giverUser: a.giverUser,
      createdAt: [],
      note: []
    };
    r_grouped.push(this[a.giveruser]);
  }

  this[a.giveruser].createdAt = this[a.giveruser].createdAt.concat(a.createdAt);
  this[a.giveruser].note = this[a.giveruser].note.concat(a.note);
}, Object.create(null));
上面的代码有什么错误?
为什么我没有与同一个giveruser合并数组?

您在
giveruser
中有一些拼写错误,应该是
giveruser

休息很好

var commondata=[{giverUser:'Abc',createdAt:'2016 11:48:40',note:'Test'},{giverUser:'Xyz',createdAt:'12:22:37',note:'testdata'},{giverUser:'Abc',createdAt:'2016 14:22:07',note:'test123'},
r_=[];
commondata.forEach(函数(a,i){
如果(!这个[a.giverUser]){
this[a.giverUser]={giverUser:a.giverUser,createdAt:[],note:[];
推(这个[给予者]);
}
此[a.giverUser].createdAt.push(a.createdAt);
这个[a.giverUser].note.push(a.note);
},Object.create(null));

document.write(''+JSON.stringify(r_,0,4)+'')
您可以使用
reduce
object.assign
。您的答案已经在这里了。哦,但是上面的代码怎么了?@DININDU:我的代码只有一个对象数组,没有两个不同的对象..请仔细看@阿奇