按字段对对象数组进行分组"dataPrin"



我已经尝试用";dataPrin";没有成功。

注意,我有两个";dataPrin";显示相同日期的字段,对吧!

我想把这个数组分组,这样;dataPrin";显示相同日期的字段,它们被分组为一个字段,如下例所示。

是否可以使用"reduce"?我希望得到社区的帮助。

当前阵列:

[{
"dataPrin": "2021-05-31T16:10:28-03:00",
"selectAll": false,
"lancamentos": [{
"cod_transacao": 1510,
"num_cpf_cnpj": "11.414.555/0001-04",
"dt_lancamamento": "2021-05-31T16:29:28-03:00",
}]
},
{
"dataPrin": "2021-05-29T16:30:28-03:00",
"selectAll": false,
"lancamentos": [{
"cod_transacao": 1511,
"num_cpf_cnpj": "11.414.555/0001-04",
"dt_lancamamento": "2021-05-31T16:29:28-03:00",
}]
},
{
"dataPrin": "2021-05-29T16:15:28-03:00",
"selectAll": false,
"lancamentos": [{
"cod_transacao": 1512,
"num_cpf_cnpj": "11.414.555/0001-04",
"dt_lancamamento": "2021-05-31T16:29:28-03:00",
}]
}]

所需阵列

[{
"dataPrin": "2021-05-31T16:10:28-03:00",
"selectAll": false,
"lancamentos": [{
"cod_transacao": 1510,
"num_cpf_cnpj": "11.414.555/0001-04",
"dt_lancamamento": "2021-05-31T16:29:28-03:00",
}]
},
{
"dataPrin": "2021-05-29T16:30:28-03:00",
"selectAll": false,
"lancamentos": [{
"cod_transacao": 1511,
"num_cpf_cnpj": "11.414.555/0001-04",
"dt_lancamamento": "2021-05-31T16:29:28-03:00",
},
{
"cod_transacao": 1512,
"num_cpf_cnpj": "11.414.555/0001-04",
"dt_lancamamento": "2021-05-31T16:29:28-03:00",
}]
}]

现在是:

var data = [{
"dataPrin": "2021-05-31T16:10:28-03:00",
"selectAll": false,
"lancamentos": [{
"cod_transacao": 1510,
"num_cpf_cnpj": "11.414.555/0001-04",
"dt_lancamamento": "2021-05-31T16:29:28-03:00",
}]
},
{
"dataPrin": "2021-05-29T16:30:28-03:00",
"selectAll": false,
"lancamentos": [{
"cod_transacao": 1511,
"num_cpf_cnpj": "11.414.555/0001-04",
"dt_lancamamento": "2021-05-31T16:29:28-03:00",
}]
},
{
"dataPrin": "2021-05-29T16:15:28-03:00",
"selectAll": false,
"lancamentos": [{
"cod_transacao": 1512,
"num_cpf_cnpj": "11.414.555/0001-04",
"dt_lancamamento": "2021-05-31T16:29:28-03:00",
}]
}]
const temp = data.reduce((res,item)=>{ 
const date = item.dataPrin.split('T')[0];
if(date in res){
res[date].lancamentos.push(...item.lancamentos)
}else{
res[date] = item;
}
return res
},{});
const desired = Object.keys(temp).map(c=>temp[c])

这非常适合reduce()

const data = [{
"dataPrin": "2021-05-31T16:10:28-03:00",
"selectAll": false,
"lancamentos": [{
"cod_transacao": 1510,
"num_cpf_cnpj": "11.414.555/0001-04",
"dt_lancamamento": "2021-05-31T16:29:28-03:00",
}]
},
{
"dataPrin": "2021-05-29T16:30:28-03:00",
"selectAll": false,
"lancamentos": [{
"cod_transacao": 1511,
"num_cpf_cnpj": "11.414.555/0001-04",
"dt_lancamamento": "2021-05-31T16:29:28-03:00",
}]
},
{
"dataPrin": "2021-05-29T16:15:28-03:00",
"selectAll": false,
"lancamentos": [{
"cod_transacao": 1512,
"num_cpf_cnpj": "11.414.555/0001-04",
"dt_lancamamento": "2021-05-31T16:29:28-03:00",
}]
}
]
let ndata = data.reduce((b, a) => {
let iden = a.dataPrin.split("T")[0];
if (b.hasOwnProperty(iden)) a.lancamentos.forEach(l => b[iden].lancamentos.push(l));
else b[iden] = a;
return b
}, {})
console.log(ndata);

最新更新