I have this data:
let array = [
{name:"20220503",num:"0900"}
{name:"20220503",num:"1500"},{name:"20220503",num:"1700"},
{name:"20220504",num:"2000"}, {name:"20220505",num:"1100"},
{name:"20220505",num:"1300"}
];
I want to make it become like this:
{
'20220503':
{
list: [ '0900', '1500', '1700' ],
data: [
{
label: 0900
value: 0900
},
{
label: 1500
value: 1500
},
{
label: 1700
value: 1700
}
]
},
'20220504':
{
list: [ '2000' ],
data: [
{
label: 2000
value: 2000
},
]
},
'20220505':
{
list: [ '1100', '1300' ],
data: [
{
label: 1100
value: 1100
},
{
label: 1300
value: 1300
},
]
}
}
This is what i have done so far:
let array = [
{date:"20220503",time:"0900"},
{date:"20220503",time:"1500"},
{date:"20220503",time:"1700"},
{date:"20220504",time:"2000"},
{date:"20220505",time:"1100"},
{date:"20220505",time:"1300"},
{date:"20220506",time:"100"},
{date:"20220507",time:"5300"},
{date:"20220507",time:"90100"},
{date:"20220509",time:"2100"}
]
let result = array.reduce((acc,{date,time}) => {
acc[date] = acc[date] || {list:[], data:[]}
acc[date].list.push(time)
acc[date].data.push(time)
return acc;
},{})
console.log(result)
But i only get result like this:
{
'20220503': {
list: [
'0900',
'1500',
'1700'
],
data: [
'0900',
'1500',
'1700'
]
},
'20220504': {
list: [
'2000'
],
data: [
'2000'
]
},
'20220505': {
list: [
'1100',
'1300'
],
data: [
'1100',
'1300'
]
},
}
I am using Javascript
acc[date].data.push(time)intoacc[date].data.push({ label: time, value: time }), no?