数据转化的问题

假如说我现在有一段这样的数据
type=line&areaStyle.show=true&lineStyle.normal.color=#000
&lineStyle.normal.width=2
type=bar&areaStyle.show=false&lineStyle.normal.color=#fff
&lineStyle.normal.width=
从数据中我们可以看出从type开始到lineStyle.normal.width结束重复了,我需要的是重复了几次就往数组里塞几个对象,以上重复了两段那么最终的格式如下,我是一点都摸不着头绪,js这方面比较弱,望大神指点,最好能简单阐述下思路我可以慢慢研究
[
{
type:'line',
areaStyle:{
show:true
},
lineStyle:{
normal:{
color:'#000',
width:2
}
}
},
{
type:'bar',
areaStyle:{
show:true
},
lineStyle:{
normal:{
color:'#fff'
width:
}
}
},
]
慕桂英3389331
浏览 394回答 2
2回答

慕少森

思路:1.先以根据”type“分割数据,a=[type1,type2,type3...]2.对type1根据”&“分割数据,b=[&1,&2,&3...]3.然后再对&1分割的一条键值对根据"="分割,key=value4.检测key中是否含有".",根据不同情况进行格式化,是一个普通对象,还是嵌套的对象。重复3,4直到b数组中数据处理完。回到1,处理type2,以此类推。第4步,一个思路,拼成JSON字符串再解析:varstr="lineStyle.normal.color=#000";functionformat4(str){vararr=str.split("=");//这里将值都转成了字符串;可另写对数字和布尔值和空值时的处理varval='\"\:\"'+arr[1]+"\"";varkeys=arr[0];varend="}";varres=keys.replace(/\./g,function(){end+="}"return"\":{\""});res="{\""+res+val+end;returnJSON.parse(res);}format4(str)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript