আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা স্ট্রিংগুলির একটি অ্যারে নেয় এবং স্ট্রিংগুলির সাথে সম্পর্কিত একটি বস্তু ফেরত দেয়৷
যেমন −
যদি অ্যারে −
হয়const arr = [ "country.UK.level.1", "country.UK.level.2", "country.US.level.1", "country.UK.level.3" ];
তারপর আউটপুট −
হওয়া উচিতconst output = { "country": [ {"UK" : {"level" : ["1", "2", "3"]}}, {"US" : {"level" : ["1","2"]}} ] }
শর্তগুলি
স্ট্র অ্যারেতে সংরক্ষিত স্ট্রিংগুলি সাজানো হবে না এবং কোডটি তার বিরুদ্ধে শক্তিশালী হওয়া উচিত৷
স্ট্রিংগুলি x.y.x.y... প্যাটার্ন অনুসরণ করবে, যেখানে x সেই অ্যারের জন্য অনন্য হবে এবং y পরিবর্তন করতে পারে। আমার উদাহরণে দেশ এবং স্তর সবসময় একই হবে কারণ তারা x pos প্রতিনিধিত্ব করে।
এটির জন্য পুনরাবৃত্তিমূলক পদ্ধতির প্রয়োজন কারণ স্ট্র অ্যারেতে সংরক্ষিত স্ট্রিংগুলি যেকোনো দৈর্ঘ্যের হতে পারে। স্ট্রিং যত লম্বা হয় তত গভীর বাসা বাঁধে।
উদাহরণ
নিম্নলিখিত কোড -
const arr = [ "country.UK.level.1", "country.UK.level.2", "country.US.level.1", "country.UK.level.3" ]; const stringToObject = arr => { const obj = {}; arr.forEach(str => { let curr = obj; let splitted = str.split('.'); let last = splitted.pop(); let beforeLast = splitted.pop(); splitted.forEach( sub => { if(!curr.hasOwnProperty(sub)){ curr[sub] = {}; }; curr = curr[sub]; }); if(!curr[beforeLast]){ curr[beforeLast] = []; }; curr[beforeLast].push(last); }); return obj; }; console.log(JSON.stringify(stringToObject(arr), undefined, 4));
আউটপুট
এটি কনসোলে নিম্নলিখিত আউটপুট তৈরি করবে -
{ "country": { "UK": { "level": [ "1", "2", "3" ] }, "US": { "level": [ "1" ] } } }