假如说我现在有一段这样的数据type=line&areaStyle.show=true&lineStyle.normal.color=#000&lineStyle.normal.width=2type=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:}}},]
2 回答
慕少森
TA贡献2019条经验 获得超9个赞
思路: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)
添加回答
举报
0/150
提交
取消