Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按关联对对象数组进行分组的最佳实践';使用JavaScript(ES6)的用户ID?_Javascript_Arrays_Ecmascript 6 - Fatal编程技术网

按关联对对象数组进行分组的最佳实践';使用JavaScript(ES6)的用户ID?

按关联对对象数组进行分组的最佳实践';使用JavaScript(ES6)的用户ID?,javascript,arrays,ecmascript-6,Javascript,Arrays,Ecmascript 6,我正在寻找关于如何根据对象的关联ID对数组进行分组的最佳实践。数据如下所示: const data = [ { "id": 1, "association": { "id": 1, "name": "Association A" }, "more_data": "...", ... }, { "id": 2, "association": { "id": 2, "name":

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

const data = [
  {
    "id": 1,
    "association": {
      "id": 1,
      "name": "Association A"
    },
    "more_data": "...",
       ...
  },
  {
    "id": 2,
    "association": {
      "id": 2,
      "name": "Association B"
    },
    ...
  },
  ...
]
因此,结果将返回:

  {
    1: [ { data_hash }, { data_hash }, ...], 
    2: [ { data_hash }, { data_hash }, ...],
    ...
  }
其中1和2是上面的关联ID。Ruby/Rails内置了一些方法,可以轻松做到这一点:

Data.group_by(&:association_id).each do |association_id, data|
  puts association_id
  data.each do |data|
    puts data
  end
end
JavaScript/ES6世界中是否有类似或等效的东西,或者有人能提供一些关于如何最好地处理这个问题的见解吗?一个库,或者仅仅是一个可以实现这个功能的函数

这里的另一个挑战是关联的ID位于该嵌套哈希中


编辑:完全不反对使用库。正在寻找有关轻量级内容的建议。

看起来lodash是最轻量级的库,具有groupBy功能:

那里的文档没有让我非常清楚,但这个问题确实:


这里的香草版使用数组reduce:(谢谢Kevin B)

没有。你必须自己拉一个库或做循环/etc。lodash或下划线的groupBy是我想到的第一件事所以你要找lib推荐?那是。。。在偏离主题的路线上骑行。但是你可以用一个简单的映射和/或reduce很容易做到这一点。我更想寻找一个实现,以及如何处理关联哈希中的嵌套id。是的,所以使用array reduce。也可能已经有几百人在这里了。