मान लीजिए, हमारे पास निम्नलिखित JSON ऑब्जेक्ट है जिसमें किसी भी स्तर तक नेस्टिंग हो सकती है:
const obj = {
"one": 1,
"two": {
"three": 3
},
"four": {
"five": 5,
"six": {
"seven": 7
},
"eight": 8
},
"nine": 9
};
हमें एक JavaScript फ़ंक्शन लिखना है जो ऐसा एक नेस्टेड JSON ऑब्जेक्ट लेता है और एक नया ऑब्जेक्ट लौटाता है जिसमें कोई नेस्टिंग नहीं होती और डॉट नोटेशन का उपयोग करके संबंधित मानों को कुंजियों से मैप करता है।
इसलिए, उपरोक्त ऑब्जेक्ट के मामले में, आउटपुट कुछ इस तरह दिखना चाहिए:
const output = {
'one': 1,
'two.three': 3,
'four.five': 5,
'four.six.seven': 7,
'four.eight': 8,
'nine': 9
};
कोड उदाहरण
const obj = {
"one": 1,
"two": {
"three": 3
},
"four": {
"five": 5,
"six": {
"seven": 7
},
"eight": 8
},
"nine": 9
};
const flattenJSON = (obj = {}, res = {}, extraKey = '') => {
for(key in obj){
if(typeof obj[key] !== 'object'){
res[extraKey + key] = obj[key];
}else{
flattenJSON(obj[key], res, `${extraKey}${key}.`);
};
};
return res;
};
console.log(flattenJSON(obj));
आउटपुट
{
one: 1,
'two.three': 3,
'four.five': 5,
'four.six.seven': 7,
'four.eight': 8,
nine: 9
}