Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.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_Typescript_Angular6_Angular8 - Fatal编程技术网

Javascript 如何根据单个数组元素中的重复日期筛选数据

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”, “

这是我已经拥有的对象数组类型

[{ “日期”:“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”, “姓名”:“你好” } ]}]

请大家帮个忙

这就是我到目前为止所做的

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”))
不要使用此日期,请使用直接日期,因为在此之后我们将比较此日期