【发布时间】:2022-10-12 21:25:00
【问题描述】:
我有以下 meetings 对象:
[
{
"id": 19,
"duration": 1.75,
"Employee": {
"name": "Jeanne",
}
},
{
"id": 20,
"duration": 1.00,
"Employee": {
"name": "Louis",
}
},
{
"id": 21,
"duration": 1.00,
"Employee": {
"name": "Jeanne",
}
}
]
我想按 Employee.name 对其进行分组。使用reduce() 这是我想出的:
meetings.reduce(function (r, a) {
r[a.Employee.name] = r[a.Employee.name] || [];
r[a.Employee.name].push(a);
return r;
}
结果对象如下:
{
"Jeanne": [
{
"id": 19,
"duration": 1.75,
"Employee": {
"name": "Jeanne"
}
},
{
"id": 21,
"duration": 1.00,
"Employee": {
"name": "Jeanne"
}
}
],
"Louis": [
{
"id": 20,
"duration": 1.00,
"Employee": {
"name": "Louis"
}
}
]
}
如果我尝试 map() 或 forEach() 我无法获得元素的值:
Array.from(thisMeeting).forEach(element => console.log(element));
return `undefined`;
【问题讨论】:
-
forEach是一个数组函数,你的 reduce 正在创建一个对象。你也许可以使用Object.entries(thisMetting).forEach(([key, value]) =>来做你想做的事。 -
您发布的内容中没有
meetings.data。 -
如果你想遍历一个对象,那么你可能会喜欢
Object.entries -
@Pointy 确实,我纠正了这个问题
标签: javascript loops