我正在寻找有关如何根据对象的关联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位于嵌套的哈希值中。
编辑:完全不反对使用库。寻找轻量级的建议。
答案 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)