Javascript JS中重构对象的最佳方法
我有一个对象数组,宽度日期和时间属性如下。我尝试按天和时间重组元素Javascript JS中重构对象的最佳方法,javascript,object,Javascript,Object,我有一个对象数组,宽度日期和时间属性如下。我尝试按天和时间重组元素 [ { data: 'data1', date: '15-02-2020 06:00:00' }, { data: 'data2', date: '15-02-2020 12:00:00' }, ... { data: 'data6', date: '17-02-2020 07:00:00' }, { data: 'data7', d
[
{
data: 'data1',
date: '15-02-2020 06:00:00'
},
{
data: 'data2',
date: '15-02-2020 12:00:00'
},
...
{
data: 'data6',
date: '17-02-2020 07:00:00'
},
{
data: 'data7',
date: '17-02-2020 09:00:00'
}
]
我想得到这个:
{
'15-02-2020' : {
'06:00:00' : 'data1',
'12:00:00' : 'data2'
},
'16-02-2020' : {
'06:00:00' : 'data3',
'12:00:00' : 'data4'
},
'17-02-2020' : {
'01:00:00' : 'data5',
'07:00:00' : 'data6',
'09:00:00' : 'data7'
}
}
我试着使用减少,但不能。我想这样做,在一个循环中没有临时变量
list.reduce((obj, item) => Object.assign(obj, {[item.date]: item}), {});
只需在数组中循环并动态构建结果对象:
const arr=[
{
数据:“数据1”,
日期:“15-02-2020 06:00:00”
},
{
数据:“数据2”,
日期:'15-02-2020 12:00:00'
},
{
数据:“数据6”,
日期:“17-02-2020 07:00:00”
},
{
数据:“数据7”,
日期:“17-02-2020 09:00:00”
}
]
常数res={}
arr.forEach(项目=>{
const dateArr=项目日期分割(“”)
if(res[dateArr[0]]){
res[dateArr[0]][dateArr[1]]=item.data
}否则{
res[dateArr[0]]={}
res[dateArr[0]][dateArr[1]]=item.data
}
})
console.log(res)
您可以减少数组,拆分日期,并为另一个对象使用day ad键
var data=[{data:'data1',date:'15-02-2020 06:00:00'},{data:'data2',date:'15-02-2020 12:00:00'},{data:'data6',date:'17-02-2020 07:00:00'},{data:'data7',date 17-02-2020 09:00:00'},
result=data.reduce((r,{data,date})=>{
const[天,时间]=日期分割(“”);
r[天]=r[天]|{};
r[天][时间]=数据;
返回r;
}, {});
控制台日志(结果)代码>