复杂的字符串数组解析:{"setting":"简单:10:5,一般:5:10,困难:2:20"},使用split多次截取

"[0,{"id":563,"name":"测试题1","dscr":null,"picId":null,"setting":"简单:10:5,一般:5:10,困难:2:20"}"

//像上面这种比较复杂的字符串数组怎么解析?

{"setting":"简单:10:5,一般:5:10,困难:2:20"}

//像这样的对象怎么解析?

写这样接口的人也真是无语了。

分析:

"[0,{"id":563,"name":"测试题1","dscr":null,"picId":null,"setting":"简单:10:5,一般:5:10,困难:2:20"}"

明显的字符串数组,我们在使用它时,必须使用JSON.parse(data)将字符串转为数组
  
JSON.pares(data)//字符串数组转数组

转换成功后的数组为:

[

  0:0,

  1:{

   dscr:null,

       id:236,

       name:"测试题1",

        picId:null,

        setting:"简单:10:5,一般:5:10,困难:2:20"

   }

]

这篇文章重点说明转换后的数组中属性为 setting 的值的获取方法,因为根据这道笔试题,是要分别取出这些值:

说明:

它表示:
type="简单"的题有quantity=10道, 每道题score=5分;“一般”的题目有5道,每道题10分;“困难”的题有2道,每道题20分

{"setting":"简单:10:5,一般:5:10,困难:2:20"}

从这个对象看,这个setting属性有个比较复杂的值,这个值由三个type组成,它们之间都由 ,逗号相连,如果分别取值的话,可以分三步走:

1、先取出每一个type,并组成一个数组,因为三个type间是由 , 逗号隔开,因此要使用 split(',')分离;

//根据逗号分离
var arr = setting.split(',');
//分离后的数据为:
[
0:"简单:10:5",
1:"一般:5:10",
2:"困难:2:20"
]

2、再取出arr数组中每一个对象的value,分析,每个vlaue由三个字符组成,分别由 : 冒号相连,如果要取值的话,仍需使用 split(':')分离

if(str.length > 0){
    for(var j = 0; j < str.length; j++){
        //将这个字符串  "简单:10:5"  分别截取
    var strItem = str[j];
        //将这个字符串  "简单:10:5"  分别截取
        var strSplit = strItem.split(':');                            
    }
}            
//分离后的数据
Array[3]
0:"简单"1:"10"2:"5"

3、分别取出:

var strType,strQuantity,strScore;

for(var z = 0; z < strSplit.length; z++){
     strType = strSplit[0];
     strQuantity = strSplit[1];
     strScore = strSplit[2];}
}                                                    
//取出后的数据
strType
"简单"
strQuantity
"10"
strScore
"5"

这时就可以做任何事情了,不过这个后端的接口也真是郁闷的紧!

原文地址:https://www.cnblogs.com/baiyygynui/p/6683499.html