为了账号安全,请及时绑定邮箱和手机立即绑定

遍历JSON数据,数据格式特殊怎么处理?

遍历JSON数据,数据格式特殊怎么处理?

Cats萌萌 2019-05-24 11:32:57
后端返回一组数据,其中有一项是这样的:"oneWeekAll":"{weekStart:2017-11-13,weekEnd:2017-11-19};{weekStart:2017-11-06,weekEnd:2017-11-12};{weekStart:2017-10-30,weekEnd:2017-11-05};"我要如何转成正常的数组以方便循环遍历呢?这里面每个大括号都是用分号间隔的,并且一整串在一个双引号内,搞得我有点乱套。求助大神,谢谢附上后台返回的全部数据:AuditRetCode:"1"AuditRetVal:"success"RetCode:"1"RetVal:"1"oneWeekAll:"{weekStart:2017-11-13,weekEnd:2017-11-19};{weekStart:2017-11-06,weekEnd:2017-11-12};{weekStart:2017-10-30,weekEnd:2017-11-05};"我要的东西在oneWeekAll里
查看完整描述

2 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

要简单点的话,就这样:
constoneWeekAll="{weekStart:2017-11-13,weekEnd:2017-11-19};{weekStart:2017-11-06,weekEnd:2017-11-12};{weekStart:2017-10-30,weekEnd:2017-11-05};";
constresult=oneWeekAll.split(';').filter(item=>item).map(item=>{
conststr=item.replace(/\{|\}/g,'')
constarr=str.split(/\:|\,/)
return{
weekStart:arr[1],
weekEnd:arr[3]
}
});
console.log(result);
                            
查看完整回答
反对 回复 2019-05-24
?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

谢邀,@Ash_Shen的回答满分,我稍稍改了一下(没啥实际意义,也不知道性能如何)
constall="{weekStart:2017-11-13,weekEnd:2017-11-19};{weekStart:2017-11-06,weekEnd:2017-11-12};{weekStart:2017-10-30,weekEnd:2017-11-05};";
constlist=all.split(";")
.filter(t=>t)
.map(t=>t.split(/[{},:]/))
.map(parts=>({
[parts[1]]:parts[2],
[parts[3]]:parts[4]
}));
然后还写了一个比较搞笑的版本(性能肯定不怎么样)
constall="{weekStart:2017-11-13,weekEnd:2017-11-19};{weekStart:2017-11-06,weekEnd:2017-11-12};{weekStart:2017-10-30,weekEnd:2017-11-05};";
constjson=all
.replace(/;?$/,"")
.replace(/,/g,"\",\"")
.replace(/:/g,"\":\"")
.replace(/;/g,",")
.replace(/\{/g,"{\"")
.replace(/\}/g,"\"}");
constlist=JSON.parse(`[${json}]`);
补充一下,上面最后一种肯定是很慢的,不过在jsPerf上测试第1种比@Ash_Shen的答案慢35%左右,尝试把两个map合并成一个map,作用不大,但是改了一个对象的key,速度一下子就起来了,居然提升了150%(也就是2.5倍)
constlist=all.split(";")
.filter(t=>t)
.map(t=>{
constparts=t.split(/[{},:]/);
return{
weekStart:parts[2],
weekEnd:parts[4]
};
});
                            
查看完整回答
反对 回复 2019-05-24
  • 2 回答
  • 0 关注
  • 336 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信