Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 按日期重新排列对象数组_Javascript_Arrays_React Native_Object - Fatal编程技术网

Javascript 按日期重新排列对象数组

Javascript 按日期重新排列对象数组,javascript,arrays,react-native,object,Javascript,Arrays,React Native,Object,我从API接收所有活动和已完成的任务。我想调整此对象以使用SectionList(React Native),使用每个日期字段(dataCadastro)按天分隔。比如说 这样的结果会很好: const dataTest = [ { title: '2020-06-15', // All tasks for the 15th of June. data: [ { id: 1, dataCadastro: '2

我从API接收所有活动和已完成的任务。我想调整此对象以使用SectionList(React Native),使用每个日期字段(dataCadastro)按天分隔。比如说

这样的结果会很好:

const dataTest = [
    {
      title: '2020-06-15', // All tasks for the 15th of June.
      data: [
        {
          id: 1,
          dataCadastro: '2020-06-15T14:33:45.4807609+00:00',
          status: 1,
          description: '',

        },
       {
          id: 2,
          dataCadastro: '2020-06-15T15:33:45.4807609+00:00',
          status: 1,
          description: '',

        }
      ],
    }, {...}  
  ];

首先要做的是将所有数据合并在一起

const allTasks = data.active.concat(data.completed);
然后,您需要按日期对它们进行聚合

const dataObject = allTasks.reduce((dataObject, task) => {
    const date = new Date(task.dataCadastro.toLocaleDateString());

    if (!dataObject[date]) dataObject[date] = { title: date, data: [] };
    dataObject[date].data.push[task];
    return dataObject;
}, {});
然后需要将数据对象转换为数组,并按日期对其排序

const data = Object.values(dataObject).sort((a, b) => a.title - b.title);

如果
active
completed
中的数据属于同一类型,则您可以通过获取条目来使用它:

var obj={active:[{id:1,dataCadastro:'2020-06-15T14:33:45.4807609+00:00',状态:1,描述:'},{id:2,dataCadastro:'2020-06-15T15:33:45.4807609+00:00',状态:1,描述:''},],完成:[{id:3,dataCadastro 2020-05-19T14:33:45.4807609+00:00',状态:1,描述:''},{id:4,dataCadastro:'2020-05-19T15:33:45.4807609+00:00',状态:1,描述:''}]};
var result=Object.entries(obj.map([551;,data])=>({title:data[0].dataCadastro,data}));

console.log(结果);
您自己有没有尝试过?
const data = Object.values(dataObject).sort((a, b) => a.title - b.title);