Javascript 如何根据单个数组元素中的重复日期筛选数据
这是我已经拥有的对象数组类型 [{ “日期”:“2019年9月12日下午12:00”, “id”:“1”, “名称”:“hello1”}{ “日期”:“2019年9月12日下午3:00”, “id”:“2”, “名称”:“hello2”}{ “日期”:“2019年9月12日下午7:00”, “id”:“3”, “名称”:“hello3”}{ “日期”:“2019年9月13日上午8:00”, “id”:“4”, “名称”:“hello4”}{ “日期”:“2019年9月14日上午10:00”, “id”:“5”, “名称”:“hello5”}{ “日期”:“2019年9月14日晚上11:30”, “id”:“6”, “名称”:“hello6”}] 但我希望新的过滤数组按照如下日期 [{ “日期”:“2019年9月12日”, “数据”:[ { “id”:“1”, “名称”:“你好” }, { “id”:“2”, “姓名”:“你好” }, { “id”:“3”, “姓名”:“你好” } ] }, { “日期”:“2019年9月13日”, “数据”:[ { “id”:“4”, “姓名”:“你好” } ] }, { “日期”:“2019年9月14日”, “数据”:[ { “id”:“5”, “姓名”:“你好” }, { “id”:“6”, “姓名”:“你好” } ]}] 请大家帮个忙 这就是我到目前为止所做的Javascript 如何根据单个数组元素中的重复日期筛选数据,javascript,typescript,angular6,angular8,Javascript,Typescript,Angular6,Angular8,这是我已经拥有的对象数组类型 [{ “日期”:“2019年9月12日下午12:00”, “id”:“1”, “名称”:“hello1”}{ “日期”:“2019年9月12日下午3:00”, “id”:“2”, “名称”:“hello2”}{ “日期”:“2019年9月12日下午7:00”, “id”:“3”, “名称”:“hello3”}{ “日期”:“2019年9月13日上午8:00”, “id”:“4”, “名称”:“hello4”}{ “日期”:“2019年9月14日上午10:00”, “
public data: any;
public dateGroupArr: any = [];
this.data.forEach((item, index) => {
dataArr = item;
dateGroupArr[item['date']]['date'] = item['date'];
dataArr.splice(dataArr['date']);
dateGroupArr[item['date']]['data'] = dataArr;
});
谢谢我希望这能有所帮助
var数据=[
{
日期:“2019年9月12日下午12:00”,
id:“1”,
姓名:“你好”
},
{
日期:“2019年9月12日下午3:00”,
id:“2”,
姓名:“hello2”
},
{
日期:“2019年9月12日下午7:00”,
id:“3”,
姓名:“hello3”
},
{
日期:“2019年9月13日上午8:00”,
id:“4”,
姓名:“你好”
},
{
日期:“2019年9月14日上午10:00”,
id:“5”,
姓名:“你好”
},
{
日期:“2019年9月14日下午11:30”,
id:“6”,
姓名:“你好”
}
].map(item=>moment(item.updatedAt).format(“YYYY-MM-DD”);
var dateList=[…新集合(data.map(item=>item.date.split(“”[0]))];//请把这个
var finalList=dateList.map(项=>({
日期:项目,
数据:data.filter(_item=>_item.date.includes(item))
}));
console.log(finalList)代码>尝试创建日期列表,然后根据每个日期筛选数据并将其添加到HashMap请提供更多详细信息以及您到底尝试了什么。请仔细阅读。您是否从DB/Some REST api服务获取此数据?如果它来自数据库,最好引入一些分组并以这种方式返回结果,否则它将需要大量循环,最终会降低性能。@SuraParise它在我的演示中工作,请检查是我创建的数据数组,还是api订阅方法中的相同或不同数组,我在同一个函数getRebeatArray()中编写了这段代码{if(this.dataId){this.dataService.details(this.dataId).subscribe((res)=>{this.data=res;var dateList=[…new Set(data.map(item=>item.updatedAt));var finalList=dateList.map(item=>({date:item,data:data.filter)(_item=>_item.updatedAt.includes(item));console.log(finalList);},(error:any)=>{console.log(error,'error');}}}}}像这样尝试过的还有getRebeatArray(){if(this.dataId){this._dataService.details(this.dataId).subscribe((res)=>{this.data=res;var dateList=[…新集合(data.map(item=>moment(item.updatedAt.format)(“YYYY-MM-DD”))];var finalList=dateList.map(item=>({date:item,data:data.filter(_item=>_item.updatedAt.includes(item)))));console.log(finalList);},(错误:any)=>{console.log(error,'error');}}}moment(item.updatedAt.format(“YYYY-MM-DD”))
不要使用此日期,请使用直接日期,因为在此之后我们将比较此日期