按子属性对对象数组进行分组

Mar*_*ark 3 javascript underscore.js

我有一个对象,其中包含从以下 JSON 加载的对象数组:

"accounts": [
{
  "name": "aa",

  "branch": {
        "id": 1
  }
}

{
  "name": "bb",

  "branch": {
        "id": 1
  }
}

{
  "name": "cc",

  "branch": {
        "id": 2
  }
}
]
Run Code Online (Sandbox Code Playgroud)

我想按分支 ID 对它们进行分组。如果我按“集合”分组,我只需这样做:

groupMap= _.groupBy(object, 'set');
Run Code Online (Sandbox Code Playgroud)

第一个和最后一个对象被分组在一起。但是我如何按属性的属性进行分组呢?

the*_*eye 6

您可以传递一个函数来返回一个值,根据该值进行分组,如下所示

console.log(_.groupBy(obj.accounts, function(currentObject) {
    return currentObject.branch.id;
}));
Run Code Online (Sandbox Code Playgroud)

输出

{
    '1': [{
        name: 'aa',
        branch: {
            id: 1
        }
    }, {
        name: 'bb',
        branch: {
            id: 1
        }
    }],
    '2': [{
        name: 'cc',
        branch: {
            id: 2
        }
    }]
}
Run Code Online (Sandbox Code Playgroud)