有一个时间数组对象,时次不连续,怎样补全比较好?

需要展示出一天中所有小时的数据,后端返回的数据是这样beforData:[
{
"time_hours":"09",//时间
"approved_amount":28068.0,
"pass_rate":1.0
},
{
"time_hours":"10",
"approved_amount":0.0,
"pass_rate":0.0
},
{
"time_hours":"11",
"approved_amount":42706.0,
"pass_rate":0.5
},
{
"time_hours":"13",
"approved_amount":0.0,
"pass_rate":0.0
},
{
"time_hours":"15",
"approved_amount":37700.0,
"pass_rate":0.5714285714
},
{
"time_hours":"16",
"approved_amount":0.0,
"pass_rate":0.0
},
{
"time_hours":"17",
"approved_amount":29520.0,
"pass_rate":0.6
},
{
"time_hours":"18",
"approved_amount":0.0,
"pass_rate":0.0
},{
"time_hours":"19",
"approved_amount":56216.0,
"pass_rate":1.0
},
{
"time_hours":"22",
"approved_amount":5800.0,
"pass_rate":1.0
},
{
"time_hours":"23",
"approved_amount":0.0,
"pass_rate":0.0
}
]
需要将缺少的小时补全,转化成[
{
"time_hours":"01:00",
"approved_amount":null,
"pass_rate":null,
},
{
"time_hours":"02:00",
"approved_amount":null,
"pass_rate":null,
},
{
"time_hours":"03:00",
"approved_amount":null,
"pass_rate":null,
},
{
"time_hours":"04:00",
"approved_amount":null,
"pass_rate":null,
},
{
"time_hours":"05:00",
"approved_amount":null,
"pass_rate":null,
},
{
"time_hours":"06:00",
"approved_amount":null,
"pass_rate":null,
},
{
"time_hours":"07:00",
"approved_amount":null,
"pass_rate":null,
},
{
"time_hours":"08:00",
"approved_amount":null,
"pass_rate":null,
},
{
"time_hours":"09:00",
"approved_amount":28068.0,
"pass_rate":1.0
},
{
"time_hours":"10:00",
"approved_amount":0.0,
"pass_rate":0.0
},
{
"time_hours":"11:00",
"approved_amount":42706.0,
"pass_rate":0.5
},
{
"time_hours":"12:00",
"approved_amount":null,
"pass_rate":null,
},
{
"time_hours":"13:00",
"approved_amount":0.0,
"pass_rate":0.0
},
{
"time_hours":"14:00",
"approved_amount":null,
"pass_rate":null,
},
{
"time_hours":"15:00",
"approved_amount":37700.0,
"pass_rate":0.5714285714
},
{
"time_hours":"16:00",
"approved_amount":0.0,
"pass_rate":0.0
},
{
"time_hours":"17:00",
"approved_amount":29520.0,
"pass_rate":0.6
},
{
"time_hours":"18:00",
"approved_amount":0.0,
"pass_rate":0.0
},{
"time_hours":"19:00",
"approved_amount":56216.0,
"pass_rate":1.0
},
{
"time_hours":"20:00",
"approved_amount":null,
"pass_rate":null,
},
{
"time_hours":"21:00",
"approved_amount":null,
"pass_rate":null,
},
{
"time_hours":"22:00",
"approved_amount":5800.0,
"pass_rate":1.0
},
{
"time_hours":"23:00",
"approved_amount":0.0,
"pass_rate":0.0
},
{
"time_hours":"00:00",
"approved_amount":null,
"pass_rate":null,
},
]
这样的,请教一下大家这个要怎么做啊?
红糖糍粑
浏览 436回答 2
2回答

阿晨1998

不谢,拿走:constbeforeData=[{"time_hours":"09",//时间"approved_amount":28068.0,"pass_rate":1.0}];constresult=Array.from({length:24},(v,i)=>i).map(hour=>{letobj=beforeData.filter(has=>Number(has.time_hours)===hour)[0]||{};return{time_hours:`${`00${hour}`.slice(-2)}:00`,approved_amount:obj.approved_amount||null,pass_rate:obj.pass_rate||null};});console.log(result);就这么简单~~~

呼啦一阵风

补充一个线性时间复杂度的functiongetFullRange(beforeData){returnbeforeData.reduce((arr,item)=>{arr[+item.time_hours]=itemreturnarr},[...newArray(24)]).map((item,i)=>{if(!item){item={time_hours:String(i),approved_amount:null,pass_rate:null,}}item.time_hours=item.time_hours.padStart(2,'0')+':00'returnitem})}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript