Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS中重构对象的最佳方法_Javascript_Object - Fatal编程技术网

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;
}, {});
控制台日志(结果)