工作中經常會遇到將json字符串轉換為json對象,但是將字符串格式數組轉為數組對象的場景卻不多
如:
其中label_exp: "["cap_pop","wkb_geometry"]"
就是需要操作的數組對象
假如我們直接使用obj.label_exp.find(item=>{})
會提示該label_exp
不是一個function
如:
好嘛,那我們換着 使用
for(let i=0;i<labelExp.length;i++){
console.log(labelExp[i]);
}
會取到label_exp: "["cap_pop","wkb_geometry"]"
中的每一個字符
如:
最后使用到了eval
將字符串轉換為真正的數組對象
console.log(labelExp);
let labelExpArr = eval('('+labelExp+')');
console.log(labelExpArr);
這樣就對了
來我們從打印中對比一下轉換前后的兩個對象的區別
如:
對比着看是否很明顯就能區分哪一個是數組對象呢? 假如我們光看第一個
,如:
是否會認為這就一個數組對象呢?
其實evel
應用於json 取值的場景也很多,如下面的一個簡單的json
var jsonobj ={
psnLoanCount1:12,
psnLoanCount2:22,
psnLoanCount3:33,
psnLoanCount4:44,
psnLoanCount5:55,
psnLoanCount6:66,
lozd:'kk',
uewjh:'kk',
jdvn:'odsj',
ucnd:'ucn'
};
假如我們想把所有包含psnLoanCount
的字段的值統計起啦,這里就可以用到eval
了
var sumCount = function(jsonobj){
var count_primal;
//遍歷數據json 獲取對應的字段filed
for(var k in jsonobj){
if(k.indexOf("Count")>0){
count_primal==null||count_primal==""?count_primal=k:"";//只接受第一個參數
}
}
//截取掉實參值的最后一位,因為最后一位為數字 如:psnLoanCount1
var count=count_primal.substring(0,count_primal.length-1);
var total=0;
for(var i=1;i<7;i++){
//define variable_value key
var variableKey_value=count+i;
total+= eval("jsonobj."+variableKey_value);
}
return total;
};
調用發方法
> console.log(sumCount(jsonobj)); /// 232
這只是一個簡單的例子可能實際工作中場景要復雜得多了