如何在 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 } } } }
广告