Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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 如何使用TypeScript对数组对象进行递归分组?_Javascript_Arrays_Typescript - Fatal编程技术网

Javascript 如何使用TypeScript对数组对象进行递归分组?

Javascript 如何使用TypeScript对数组对象进行递归分组?,javascript,arrays,typescript,Javascript,Arrays,Typescript,我正在使用Ionic 3开发,我有一个JSON数据,格式如下(见url): 任务是显示逐日时间条目。时间条目基于punchType-i:epunchType==0表示用户处于脱机状态,punchType==1表示用户正在休息,punchType==2表示用户处于联机状态 现在,如何高效地编写返回结果数组的函数,如下所示(伪代码): 因此,对于每一天,我可以显示与相应标签分组的总时间条目 请帮助。似乎您可以使用它按天对数据进行分组,我在代码中添加了注释,试图对此进行解释 const parse

我正在使用Ionic 3开发,我有一个JSON数据,格式如下(见url):

任务是显示逐日时间条目。时间条目基于
punchType
-i:e
punchType==0
表示用户处于脱机状态,
punchType==1
表示用户正在休息,
punchType==2
表示用户处于联机状态

现在,如何高效地编写返回结果数组的函数,如下所示(伪代码):

因此,对于每一天,我可以显示与相应标签分组的总时间条目

请帮助。

似乎您可以使用它按天对数据进行分组,我在代码中添加了注释,试图对此进行解释

const parseData=url=>$.get(url)。然后(data=>
数据减少((全部,当前)=>{
//查看累加器中是否有对象具有相同的日期。
const ndx=all.findIndex(e=>e.day===curr.day)
//如果存在,将其保存在obj中,否则创建一个新的。
设obj=ndx>-1?全部[ndx]:{
日期:当前日期,
总数:0,
totalBreak:0,
totalOnline:0
};
//根据冲压类型增加属性
curr.punchType===0?
obj.totalOffline+=当前分钟数:
curr.punchType===1?
obj.totalBreak+=当前分钟数:
obj.totalOnline+=当前分钟数;
//如果是新对象,则需要将其推送到列表中。
ndx==-1&&all.push(obj)
全部归还;
}, [])
)
解析数据('https://jsonblob.com/api/jsonBlob/5aed9990-0eb9-11e9-b29a-2d13328e5286')
。然后(result=>console.log(result))
var数据=[
{
“endAt”:1546327200621,
“结束时间”:770,
“地点”:{
“纬度”:22.563032,
“经度”:88.3148152
},
“分钟”:1,
“punchType”:2,
“反向编码”:“.geocode在此”,
“startAt”:1546327117421,
“开始时间”:768,
“teamRef”:“-LQJBi69vfFfvU9Dmz-x”,
“时间戳”:1546327200621,
“日期”:“2019年1月1日”
},
{
“endAt”:1546327400397,
“结束时间”:773,
“地点”:{
“纬度”:22.563032,
“经度”:88.3148152
},
“分钟”:3,
“punchType”:1,
“反向编码”:“.geocode在此”,
“startAt”:1546327200632,
“开始时间”:770,
“teamRef”:“-LQJBi69vfFfvU9Dmz-x”,
“时间戳”:1546327400397,
“日期”:“2019年1月1日”
},
{
“endAt”:1546327696256,
“结束时间”:778,
“地点”:{
“纬度”:22.563032,
“经度”:88.3148152
},
“分钟”:1,
“punchType”:2,
“反向编码”:“.geocode在此”,
“startAt”:1546327632210,
“开始时间”:777,
“teamRef”:“-LQJBi69vfFfvU9Dmz-x”,
“时间戳”:1546327696256,
“日期”:“2019年1月1日”
},
{
“endAt”:1546327767380,
“结束时间”:779,
“地点”:{
“纬度”:22.563032,
“经度”:88.3148152
},
“分钟”:1,
“punchType”:1,
“反向编码”:“.geocode在此”,
“startAt”:1546327696266,
“开始时间”:778,
“teamRef”:“-LQJBi69vfFfvU9Dmz-x”,
“时间戳”:1546327767380,
“日期”:“2019年1月1日”
},
{
“endAt”:1546327895211,
“结束时间”:781,
“地点”:{
“纬度”:22.563032,
“经度”:88.3148152
},
“分钟”:2,
“punchType”:2,
“反向编码”:“.geocode在此”,
“startAt”:1546327767387,
“开始时间”:779,
“teamRef”:“-LQJBi69vfFfvU9Dmz-x”,
“时间戳”:1546327895211,
“日期”:“2019年1月1日”
},
{
“endAt”:1546333470799,
“结束时间”:874,
“地点”:{
“纬度”:22.5630407,
“经度”:88.3148147
},
“分钟”:92,
“punchType”:1,
“反向编码”:“.geocode在此”,
“startAt”:1546327895220,
“开始时间”:781,
“teamRef”:“-LQJBi69vfFfvU9Dmz-x”,
“时间戳”:1546333470799,
“日期”:“2019年1月1日”
},
{
“endAt”:1546333790500,
“结束时间”:879,
“地点”:{
“纬度”:22.5630407,
“经度”:88.3148147
},
“分钟”:5,
“punchType”:2,
“反向编码”:“.geocode在此”,
“startAt”:1546333470807,
“开始时间”:874,
“teamRef”:“-LQJBi69vfFfvU9Dmz-x”,
“时间戳”:1546333790500,
“日期”:“2019年1月1日”
},
{
“endAt”:1546333862414,
“结束时间”:881,
“地点”:{
“纬度”:22.5630407,
“经度”:88.3148147
},
“分钟”:1,
“punchType”:1,
“反向编码”:“.geocode在此”,
“startAt”:1546333790510,
“开始时间”:879,
“teamRef”:“-LQJBi69vfFfvU9Dmz-x”,
“时间戳”:1546333862414,
“日期”:“2019年1月1日”
},
{
“endAt”:1546333954030,
“结束时间”:882,
“地点”:{
“纬度”:22.5630407,
“经度”:88.3148147
},
“分钟”:1,
“punchType”:2,
“反向编码”:“.geocode在此”,
“startAt”:1546333862422,
“开始时间”:881,
“teamRef”:“-LQJBi69vfFfvU9Dmz-x”,
“时间戳”:1546333954030,
“日期”:“2019年1月1日”
},
{
“endAt”:1546334540130,
“结束时间”:892,
“地点”:{
“纬度”:22.5630316,
“经度”:88.3148142
},
“分钟”:8,
“punchType”:1,
“反向编码”:“.geocode在此”,
“startAt”:1546334046035,
“开始时间”:884,
“teamRef”:“-LQJBi69vfFfvU9Dmz-x”,
“时间戳”:1546334540130,
“日期”:“2019年1月1日”
},
{
“endAt”:1546335238707,
“结束时间”:903,
“地点”:{
“纬度”:22.5630331,
“经度”:88.3148138
},
“分钟”:11,
“punchType”:2,
“反向编码”:“.geocode在此”,
“startAt”:1546334540140,
“开始时间”:892,
“teamRef”:“-LQJBi69vfFfvU9Dmz-x”,
“时间戳”:1546335238707,
“日期”:“2019年1月1日”
},
{
“endAt”:1546339116332,
“结束时间”:968,
“地点”:{
“纬度”:22.5630331,
“经度”:88.3148138
},
“分钟”:64,
“punchType”:1,
“反向编码”:“.geocode在此”,
“s
    let arr = [
{"day": 1 January 2019, "totalOffline": ..., "totalBreak": ..., "totalOnline": ...},
{"day": 2 January 2019, "totalOffline": ..., "totalBreak": ..., "totalOnline": ...},
.. so on 
]