前幾天有我的問我,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是配置的數組