使用JavaScript(ES6)通过关联ID对对象数组进行分组的最佳实践?

时间:2017-05-19 18:12:00

标签: javascript arrays ecmascript-6

我正在寻找有关如何根据对象的关联ID对数组进行分组的最佳做法。数据如下所示:

$("#error_explanation").text(msg).delay(3000).fadeOut()

结果将返回:

const data = [
  {
    "id": 1,
    "association": {
      "id": 1,
      "name": "Association A"
    },
    "more_data": "...",
       ...
  },
  {
    "id": 2,
    "association": {
      "id": 2,
      "name": "Association B"
    },
    ...
  },
  ...
]

其中1和2是上面的关联ID。 Ruby / Rails有内置的方法可以轻松完成这个任务:

  {
    1: [ { data_hash }, { data_hash }, ...], 
    2: [ { data_hash }, { data_hash }, ...],
    ...
  }

在JavaScript / ES6世界中是否存在类似或等同的内容,或者任何人都可以提供有关如何最好地处理此问题的一些见解?一个库,甚至只是一个可以解决问题的函数?

另一个增加的挑战是关联的ID位于嵌套的哈希值中。

编辑:完全不反对使用库。寻找轻量级的建议。

1 个答案:

答案 0 :(得分:0)

看起来lodash是具有groupBy函数的最轻量级的库:

https://lodash.com/docs/4.17.4#groupBy

那里的文件并没有让我很清楚,但是这个问题确实存在:

using lodash .groupBy. how to add your own keys for grouped output?

Vanilla版本在这里使用数组reduce:https://stackoverflow.com/a/39635080/2202674(感谢Kevin B)