javascript - 按键分组对象数组 - javascript
问题描述
在任何事情之前,我确实在互联网上寻找其他答案,但我仍然无法让它工作,我不知道为什么
所以,我有一个包含对象的数组:
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;
}, [])
有人可以解释为什么吗?
解决方案
那是因为value.index
is 不存在所以它的值总是undefined
。
更改value.index
为value.id
,它将按预期工作。
const array = [{
"name": "Alex",
"id": 0
},
{
"age": 20,
"id": 0
},
{
"name": "John",
"id": 1
},
{
"age": 30,
"id": 1
}
];
const output = array.reduce((a, value) => {
a[value.id] = [...a[value.id] || [], value];
return a;
}, []);
console.log(output);
推荐阅读
- cadence-workflow - 在实现 Uber Cadence 工作流程时,Java 客户端与 Go 客户端有哪些重大差异?
- css - Tailwind-CSS 在将 .hidden 应用于元素后不应用 flex/block
- java-8 - drools-6.5 是否向后兼容 drools-2.5?
- apache-spark - 之间语句不适用于 Hive Map 列 - Spark SQL
- kotlin - 如何将 Kotlin 的多平台依赖源附加到 IDEA?
- python - 使用 XlsxWriter 将 CSV 保存在 Excel 工作簿的不同工作表中
- r - R - 有条件地用来自另一个数据帧的值替换值
- mysql - 如何根据分隔符将 SQL 字符串拆分为两个变量?
- java - IE11 将 .xlsx 文件转换为 .xls 并将 .docx 文件转换为 .doc
- .net - HttpClient、WebClient 或 HttpWebRequest 首次尝试读取文件需要 90 秒,之后它会快速运行