遞歸遍歷JSON樹

遞歸遍歷JSON樹

前幾天有我的問我,json串的層級無限深,但在json串中的key是已知的,在json串中的value,有些事Object,有些是Array,如何把這些層級無限深的key所對應的value,如果Object,轉爲Array。json

首先,若是遇到了這個層級無限深的問題,確定是要用到遞歸的,那麼遞歸的出口在哪裏?就是判斷,該key所對應的value值,是不是Object。數組

直接上代碼spa

 1 function traversalJson(jsonObj) {
 2     // 循環全部鍵
 3     for(let key in jsonObj) {
 4         let element = jsonObj[key];
 5         //若是對象類型爲object類型且數組長度大於0 或者 是對象 ,繼續遞歸解析
 6         if(element.length > 0 && typeof(element) === "object" || typeof(element) === "object") {
 7             //當鍵值爲配置項的這些鍵值時候,而且這些類型爲Object,不是數組時候,使之變爲數組。
8 for(let i=0;i<arrConfig.length;i++){ 9 if(key===arrConfig[i]&& !(element instanceof Array)){ 10 jsonObj[key] = [element]; 11 } 12 } 13 traversalJson(element); 14 } else { 15 //不是對象或者數組,則不作操做 16 } 17 } 18 }  //arrConfig是配置的數組