工作中經常會遇到將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
這只是一個簡單的例子可能實際工作中場景要復雜得多了
