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

标签 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: '"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);

关于javascript - 如何在javascript中合并具有相同键的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36893924/

相关文章:

javascript - html 'inception' 跨浏览器问题

javascript - jquery .one() 触发查询一次,但是如果 .one() 内部出现问题,我如何才能触发查询一次?

javascript - 将对象内部的对象数组作为多个对象 JavaScript

javascript - 如何在 li>div 中找到特定字符串并将其隐藏

javascript - jQuery Post 返回页面源代码 (laravel)

javascript - 用值拆分数组 - 像 String.split

javascript - 根据对象属性创建数组

arrays - 使用awk数组消除基于单独字段的重复列?

javascript - 合并对象

oop - 如何从 Tcl 的父类(super class)中访问派生类的成员变量?