js 字符串格式數組轉為數組對象


工作中經常會遇到將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


這只是一個簡單的例子可能實際工作中場景要復雜得多了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM