কম্পিউটার টিউটোরিয়াল

জাভাস্ক্রিপ্টে রিকার্সিভ স্ট্রিং পার্সিং করে অবজেক্ট তৈরি করা


আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা একটি স্ট্রিং অ্যারে নেবে এবং স্ট্রিংগুলো অনুযায়ী একটি অবজেক্ট রিটার্ন করবে।

উদাহরণ −

যদি অ্যারেটি হয় −

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"]}}   ] }

 

শর্তাবলী

str অ্যারেতে স্ট্রিংগুলো সোর্টেড থাকবে না এবং কোডটি সেটি হ্যান্ডেল করতে পারতে হবে।

স্ট্রিংগুলো x.y.x.y... প্যাটার্ন ফলো করবে, যেখানে x সেই অ্যারেতে ইউনিক হবে এবং y পরিবর্তনশীল। আমার উদাহরণে country এবং level সবসময় একই থাকবে কারণ সেগুলো x পজিশন উপস্থাপন করে।

এই সমস্যাটি রিকার্সিভ পদ্ধতিতে সমাধান করতে হবে কারণ স্ট্রিংগুলো যেকোনো দৈর্ঘ্যের হতে পারে। যত বড় স্ট্রিং, তত গভীর নেস্টিং।

উদাহরণ

নিচে কোডটি দেওয়া হলো −

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"            ]        }    } }

  1. স্ট্রিংকে জাভাস্ক্রিপ্ট অবজেক্টে রূপান্তর করা

  2. জাভাস্ক্রিপ্টে স্ট্রিংকে অংশে ভাগ করা

  3. জাভাস্ক্রিপ্টে স্ট্রিং থেকে অবজেক্ট কনস্ট্রাক্ট করা

  4. জাভাস্ক্রিপ্টে অ্যারে অফ অ্যারে কনভার্ট করে অবজেক্ট বানানো