繁体   English   中英

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

[英]How to merge objects with same key in javascript?

我有一个名为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: 'Test data' }, { giverUser: 'Abc', createdAt: '2016 14:22:07', note: '"test123"' }], r_grouped = []; 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.push(a.createdAt); this[a.giverUser].note.push(a.note); }, Object.create(null)); document.write('<pre>' + JSON.stringify(r_grouped, 0, 4) + '</pre>'); 

只是另一个注释

this[a.giverUser].createdAt = this[a.giverUser].createdAt.concat(a.createdAt);

如果值不是数组,则不需要这样做。 你可以采取推动。

this[a.giverUser].createdAt.push(a.createdAt);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM