如何在 JavaScript 中把方括號物件鍵轉換為巢狀物件?


我們知道,在 JavaScript 中有兩種方法可以訪問物件內的巢狀鍵。

例如,採用此物件 −

const obj = {
   object: {
      foo: {
         bar: {
            ya: 100
         }
      }
   }
};

如果我們需要訪問或更新巢狀屬性 'ya',我們就可以像這樣訪問 −

方法 1 −

obj['object']['foo']['bar']['ya']

方法 2 −

obj.object.foo.bar.ya

這兩種方法都將我們引向相同的目的地。

我們需要編寫一個 JavaScript 函式,它把巢狀鍵的路徑作為字串的形式,如下所示 1,並將其轉換為方式 2 所示的符號。

示例

程式碼將是 −

const obj = { "object[foo][bar][ya]": 100 };
const constructDotNotation = obj => {
   const keys = Object.keys(obj)[0].split('[').map(el => {
      return el.replace(']', '');
   });
   let res = {};
   keys.reverse().forEach(key => {
      if (Object.keys(res).length === 0){
         res[key] = obj[Object.keys(obj)[0]];
      }else{
         const temp = {};
         temp[key] = res;
         res = temp;
      };
   });
   return res;
};
console.log(JSON.stringify(constructDotNotation(obj), undefined, 4));

輸出

控制檯中的輸出將是 −

{
   "object": {
      "foo": {
         "bar": {
            "ya": 100
         }
      }
   }
}

更新於: 20-11-2020

702 次瀏覽

開啟您的 職業生涯

完成課程後便可獲得認證

開始吧
廣告