ภาพรวม
สมมติว่าเรามีอ็อบเจ็กต์ JSON ดังนี้:
const obj = {
"context": {
"device": {
"localeCountryCode": "AX",
"datetime": "3047-09-29T07:09:52.498Z"
},
"currentLocation": {
"country": "KM",
"lon": -78789486
}
}
};
เราต้องเขียนฟังก์ชันเรียกซ้ำที่แปลงอ็อบเจ็กต์เป็นรูปแบบ "label" - "children"
ผลลัพธ์ที่คาดหวัง
const output = {
"label": "context",
"children": [
{
"label": "device",
"children": [
{ "label": "localeCountryCode" },
{ "label": "datetime" }
]
},
{
"label": "currentLocation",
"children": [
{ "label": "country" },
{ "label": "lon" }
]
}
]
};
ตัวอย่างโค้ด
const obj = {
"context": {
"device": {
"localeCountryCode": "AX",
"datetime": "3047-09-29T07:09:52.498Z"
},
"currentLocation": {
"country": "KM",
"lon": -78789486
}
}
};
const transformObject = (obj = {}) => {
if (obj && typeof obj === 'object') {
return Object.keys(obj).map((el) => {
let children = transformObject(obj[el]);
return children ? {
label: el,
children: children
} : {
label: el
};
});
}
};
console.log(JSON.stringify(transformObject(obj), undefined, 4));
ผลลัพธ์ในคอนโซล
[
{
"label": "context",
"children": [
{
"label": "device",
"children": [
{ "label": "localeCountryCode" },
{ "label": "datetime" }
]
},
{
"label": "currentLocation",
"children": [
{ "label": "country" },
{ "label": "lon" }
]
}
]
}
]