हम जानते हैं कि जावास्क्रिप्ट में किसी ऑब्जेक्ट के भीतर नेस्टेड कुंजियों तक पहुंचने के दो तरीके हैं।
उदाहरण के लिए, इस वस्तु को लें -
const obj = { object: { foo: { bar: { ya: 100 } } } };
अगर हमें नेस्टेड प्रॉपर्टी 'ya' को एक्सेस या अपडेट करने की जरूरत है, तो हम इसे इस तरह एक्सेस कर सकते हैं -
रास्ता 1 −
obj['object']['foo']['bar']['ya']
या रास्ता 2 −
obj.object.foo.bar.ya
ये दोनों रास्ते हमें एक ही मंजिल तक ले जाते हैं।
हमें एक जावास्क्रिप्ट फ़ंक्शन लिखने की आवश्यकता है जो नेस्टेड कुंजी के पथ में 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 } } } }