如何解决如何将具有日期的对象拆分为另一个对象,并按年和月分隔?
我试图按年份和月份将javascript中的一组对象拆分为不同的对象。
有人可以指出正确的方向来处理此类问题吗?
我从api获取的数据:
(7) [{…},{…},{…}]
0:
ano: "2020"
comprovante: "https://firebasestorage.googleapis.com/v0/b/dspsas-d0668.appspot.com/o/Storage%2FUser%2FbkrxhlxOCtY3kHUHlW9lnStIVlG2%2FComprovantes%2FxToy7.png?alt=media&token=d2184d68-f094-4c68-8a04-8c5e8e864559"
created_at: FirestoreTimestamp {_seconds: 1598723129,_nanoseconds: 75000000}
dataLancamento: FirestoreTimestamp {_seconds: 1598670000,_nanoseconds: 0}
dateArray: (3) ["29","08","2020"]
descricao: "lançamento"
dia: "29"
id: "3HCE8VxzBlV7GKsu89Ti"
mes: "08"
tags: (3) ["Tag","teste","Música"]
tipoLancamento: "Despesa"
user_id: "bkrxhlxOCtY3kHUHlW9lnStIVlG2"
valor: 1
__proto__: Object
1:
ano: "2020"
comprovante: null
created_at: FirestoreTimestamp {_seconds: 1598809946,_nanoseconds: 737000000}
dataLancamento: FirestoreTimestamp {_seconds: 1588302000,_nanoseconds: 0}
dateArray: (3) ["01","05","2020"]
descricao: "Teste"
dia: "01"
id: "EBHCwuc4w7Yum5H20C6u"
mes: "05"
tags: false
tipoLancamento: "Despesa"
user_id: "bkrxhlxOCtY3kHUHlW9lnStIVlG2"
valor: 5
__proto__: Object
2: {comprovante: null,valor: 1,created_at: FirestoreTimestamp,dataLancamento: FirestoreTimestamp,tipoLancamento: "EnTrada",…}
我想要这样的东西:
object:
{
0: {
year: 2019,months: {
0: {...obj}
1: {...obj}
2: {
month: 'mar',items: {
0: {...item},1: {...item},}
}
}
}
}
解决方法
来自移动设备的
N.B日志记录,因此格式和语法可能有些不正确。同样,您似乎也不熟悉js对象和数组,因此将其简化,以便您了解发生了什么。
const yourArray = [
{ ...dateArray: [...]},{ ...dateArray: [...]},{ ...dateArray: [...]}
];
var monthNames = [‘January’...];
function groupBy(objectArray,property) {
return objectArray.reduce((acc,obj) => {
const year = obj[property][2];
if (!acc[year]) {
acc[year] = [];
}
var month = monthNames[obj[property][1]];
if(!acc[year][month]){
acc[year][month] = [];
}
// Add object to list for given key's value
acc[year][month].push(obj);
return acc;
},{});
}
const grouped = groupBy(yourArray,'dateArray');
console.log(grouped);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。