如何在 JavaScript 中将方括号对象键转换为嵌套对象?

javascriptweb developmentfront end technologyobject oriented programming

我们知道有两种方法可以在 JavaScript 中访问对象内的嵌套键。

例如,取这个对象 −

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

如果我们需要访问或更新嵌套属性 'ya',我们可以像这样访问它 −

Way 1 −

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

orWay 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
         }
      }
   }
}

相关文章