Javascript 按日期重新排列对象数组
我从API接收所有活动和已完成的任务。我想调整此对象以使用SectionList(React Native),使用每个日期字段(dataCadastro)按天分隔。比如说 这样的结果会很好: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
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);