【发布时间】:2021-02-23 11:46:10
【问题描述】:
之前,我确实在互联网上寻找过其他答案,但我仍然无法让它工作,我不知道为什么
所以,我有一个包含对象的数组:
array =[
{
"name":"Alex",
"id":0
},
{
"age":20,
"id":0
},
{
"name":"John",
"id":1
},
{
"age":30,
"id":1
}
]
我想根据他们的 id 对他们进行分组,所以我希望结果是这样的:
array =[
[
{
"name":"Alex",
"id":0
},
{
"age":20,
"id":0
}
],
[
{
"name":"John",
"id":1
},
{
"age":30,
"id":1
}
]
]
我找到了一堆可以使用类似方法的答案,所以我试了一下,但我不知道为什么它不起作用
array.reduce((a, value) => {
a[value.id] = [...a[value.id] || [], value];
return a;
}, [])
谁能解释一下原因?
【问题讨论】:
-
获取任何“按属性分组的对象数组” 个重复项。它们几乎总是会返回一个对象 (
{ "0": [ ... ], "1": [ ... ] })。将此对象传递给Object.values(),您应该会得到预期的结果。 -
您刚刚进行的编辑使您的代码工作 - 虽然,它目前依赖于您的 ids 是从 0 连续增加的有效数组索引
标签: javascript arrays object ecmascript-6 reduce