हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना है जो स्ट्रिंग्स की एक सरणी लेता है और स्ट्रिंग्स के अनुरूप ऑब्जेक्ट देता है।
उदाहरण के लिए -
यदि सरणी है -
const arr =[ "country.UK.level.1", "country.UK.level.2", "country.US.level.1", "country.UK.level.3"];पूर्व>तब आउटपुट होना चाहिए -
कॉन्स आउटपुट ={"देश":[{"यूके":{"स्तर":["1", "2", "3"]}}, {"यूएस":{"स्तर":[" 1","2"]}} ]}
शर्तें
str सरणी में संग्रहीत स्ट्रिंग्स को सॉर्ट नहीं किया जाएगा और कोड उसके विरुद्ध मजबूत होना चाहिए।
स्ट्रिंग्स x.y.x.y... पैटर्न का पालन करेंगे, जहां x उस सरणी के लिए अद्वितीय होगा और y बदल सकता है। मेरे उदाहरण में देश और स्तर हमेशा वही रहेगा जो वे x स्थिति का प्रतिनिधित्व करते हैं।
इसके लिए पुनरावर्ती दृष्टिकोण की आवश्यकता होती है क्योंकि str सरणी में संग्रहीत तार किसी भी लम्बाई के हो सकते हैं। स्ट्रिंग जितनी लंबी होगी, घोंसला उतना ही गहरा होगा।
उदाहरण
निम्नलिखित कोड है -
const arr =[ "country.UK.level.1", "country.UK.level.2", "country.US.level.1", "country.UK.level.3"];const stringToObject =गिरफ्तार => { const obj ={}; arr.forEach(str => { let curr =obj; let splitted =str.split('.'); let last =splitted.pop(); let beforeLast =splitted.pop(); splitted.forEach( sub => { अगर(!curr.hasOwnProperty(sub)){ curr[sub] ={}; }; curr =curr[sub]; }); if(!curr[beforeLast]){ curr[beforeLast] =[]; }; कर्व [पहले लास्ट]। पुश (आखिरी); }); वापसी obj;};console.log(JSON.stringify(stringToObject(arr), अपरिभाषित, 4));आउटपुट
यह कंसोल पर निम्न आउटपुट उत्पन्न करेगा -
{ "देश":{ "यूके":{ "स्तर":[ "1", "2", "3" ] }, "अमेरिका":{ "स्तर":[ "1" ] } }}