如何在 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
}
}
}
}
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP