將字串轉換成層次物件 - JavaScript


假設我們有一種特殊字串,其中包含成對的字元,如下所示 −

const str = "AABBCCDDEE";

我們需要基於此字串構建一個物件,該物件看起來應如下所示 −

const obj = {
   code: "AA",
   sub: {
       code: "BB",
       sub: {
           code: "CC",
           sub: {
               code: "DD",
               sub: {
                   code: "EE",
                   sub: {}
               }
           }
       }
   }
};

請注意,對於字串中的每一對唯一對,我們都會有一個新的子物件,並且任何級別的程式碼屬性都表示一個特定的對。

我們可以使用遞迴方法來解決此問題。我們將遞迴地迭代字串以選擇特定的對,併為其分配一個新的子物件

示例

以下是程式碼 −

const str = "AABBCCDDEE";
const constructObject = str => {
   const res = {};
   let ref = res;
   while(str){
      const words = str.substring(0, 2);
      str = str.substr(2, str.length);
      ref.code = words;
      ref.sub = {};
      ref = ref.sub;
   };
   return res;
};
console.log(JSON.stringify(constructObject(str), undefined, 4));

輸出

這將在控制檯中生成以下輸出 −

{
   "code": "AA",
   "sub": {
       "code": "BB",
       "sub": {
           "code": "CC",
           "sub": {
               "code": "DD",
               "sub": {
                   "code": "EE",
                   "sub": {}
               }
           }
       }
   }
}

更新於: 18-Sep-2020

344 次瀏覽

開啟您的職業生涯

獲取課程認證

開始
廣告