【发布时间】:2020-05-27 05:21:57
【问题描述】:
我想按 2 个属性对一组对象进行分组。我怎样才能做到这一点?
我得到了这个数组:
[
{
"nome": "Beatrice Mattos",
"apelido": "Beatrice",
"dt_extrato": "2020-05-26T00:00:00",
"dt_inicio": "2020-05-26T15:00:00",
"Servico": "Corte Masculino"
},
{
"nome": "Davi",
"apelido": "Davi",
"dt_extrato": "2020-05-26T00:00:00",
"dt_inicio": "2020-05-26T14:00:00",
"Servico": "Corte Masculino"
},
{
"nome": "Kai",
"apelido": "Martins",
"dt_extrato": "2020-05-26T00:00:00",
"dt_inicio": "2020-05-26T13:30:00",
"Servico": "Barba Completa"
},
{
"nome": "Beatrice Mattos",
"apelido": "Beatrice",
"dt_extrato": "2020-05-26T00:00:00",
"dt_inicio": "2020-05-26T09:30:00",
"Servico": "Corte Masculino"
},
{
"nome": "Beatrice Mattos",
"apelido": "Beatrice",
"dt_extrato": "2020-05-26T00:00:00",
"dt_inicio": "2020-05-26T09:00:00",
"Servico": "Alongamento de Cabelo"
},
{
"nome": "Beatrice Mattos",
"apelido": "Beatrice",
"dt_extrato": "2020-05-26T00:00:00",
"dt_inicio": "2020-05-26T08:00:00",
"Servico": "Corte Masculino"
},
{
"nome": "Estevan Alves",
"apelido": "Estevan",
"dt_extrato": "2020-05-25T00:00:00",
"dt_inicio": "2020-05-25T08:40:00",
"Servico": "Corte Masculino"
},
{
"nome": "Kai",
"apelido": "Martins",
"dt_extrato": "2020-05-25T00:00:00",
"dt_inicio": "2020-05-25T08:30:00",
"Servico": "Corte Masculino"
},
{
"nome": "Estevan Alves",
"apelido": "Estevan",
"dt_extrato": "2020-05-25T00:00:00",
"dt_inicio": "2020-05-25T08:00:00",
"Servico": "Corte Masculino"
}
]
我想把它转换成这个对象:
{
"2020-05-26T00:00:00": [{
"Beatrice Mattos": [
{
"nome": "Beatrice Mattos",
"apelido": "Beatrice",
"dt_extrato": "2020-05-26T00:00:00",
"dt_inicio": "2020-05-26T15:00:00",
"Servico": "Corte Masculino"
},
{
"nome": "Beatrice Mattos",
"apelido": "Beatrice",
"dt_extrato": "2020-05-26T00:00:00",
"dt_inicio": "2020-05-26T09:30:00",
"Servico": "Corte Masculino"
},
{
"nome": "Beatrice Mattos",
"apelido": "Beatrice",
"dt_extrato": "2020-05-26T00:00:00",
"dt_inicio": "2020-05-26T09:00:00",
"Servico": "Alongamento de Cabelo"
},
{
"nome": "Beatrice Mattos",
"apelido": "Beatrice",
"dt_extrato": "2020-05-26T00:00:00",
"dt_inicio": "2020-05-26T08:00:00",
"Servico": "Corte Masculino"
}
],
"Davi": [
{
"nome": "Davi",
"apelido": "Davi",
"dt_extrato": "2020-05-26T00:00:00",
"dt_inicio": "2020-05-26T14:00:00",
"Servico": "Corte Masculino"
}
],
"Kai": [
{
"nome": "Kai",
"apelido": "Martins",
"dt_extrato": "2020-05-26T00:00:00",
"dt_inicio": "2020-05-26T13:30:00",
"Servico": "Barba Completa"
}
]
}],
"2020-05-25T00:00:00": [{
"Kai": [
{
"nome": "Kai",
"apelido": "Martins",
"dt_extrato": "2020-05-26T00:00:00",
"dt_inicio": "2020-05-26T13:30:00",
"Servico": "Barba Completa"
},
{
"nome": "Kai",
"apelido": "Martins",
"dt_extrato": "2020-05-25T00:00:00",
"dt_inicio": "2020-05-25T08:30:00",
"Servico": "Corte Masculino"
}
],
"Estevan Alves": [
{
"nome": "Estevan Alves",
"apelido": "Estevan",
"dt_extrato": "2020-05-25T00:00:00",
"dt_inicio": "2020-05-25T08:40:00",
"Servico": "Corte Masculino"
},
{
"nome": "Estevan Alves",
"apelido": "Estevan",
"dt_extrato": "2020-05-25T00:00:00",
"dt_inicio": "2020-05-25T08:00:00",
"Servico": "Corte Masculino"
}
]
}]
}
我的目标是按日期和名称对服务进行分组。我只能按一个或另一个分组,不能同时分组。
要按字段“名称”分组,我使用以下代码:
this.name_group = this.array.reduce((data, object) => {
data[object.nome] = [...data[object.nome] || [], object];
return data;
}, {});
要按字段“dt_extrato”分组,我使用以下代码:
this.date_group = this.array.reduce((data, object) => {
data[object.dt_extrato] = [...data[object.dt_extrato] || [], object];
return data;
}, {});
但我无法将两者都分组,嵌套。这可能只使用reduce吗?
谢谢
【问题讨论】:
-
您真的想要为具有单个对象的组提供数组吗?
-
我不知道这是否是最好的方法。我正在使用 Angular 并打算更改应用程序的财务报表屏幕。目前正在列出所有服务,现在他们希望将其按日期和专业分组。由于数据以数组的形式来自服务器,我认为最好将其直接转换为客户端。
标签: javascript arrays group-by reduce