কম্পিউটার

জাভাস্ক্রিপ্ট একসাথে গোষ্ঠীবদ্ধ বস্তুর অ্যারে অ্যারে রূপান্তর করুন


ধরা যাক, আমাদের কাছে একটি দ্বি-মাত্রিক অ্যারে রয়েছে যাতে কিছু রঙ এবং ফল সম্পর্কে ডেটা রয়েছে

const data =[ ['কমলা', 'ফল'], ['লাল', 'রঙ'], ['সবুজ', 'রঙ'], ['কমলা', 'রঙ'], ['কলা' ', 'ফল'], ['নীল', 'রঙ'], ['লেবু', 'ফল'], ['আম', 'ফল'], ['লেবু', 'রঙ'],]; 

আমাদের এমন একটি ফাংশন লিখতে হবে যা এই অ্যারেতে নেয় এবং একটি অ্যারে ফেরত দেয় যেখানে বিভিন্ন ফল এবং রঙ তাদের বিভাগ অনুসারে গোষ্ঠীবদ্ধ হয়৷

এই উদাহরণের মতো আমাদের কাছে 'ফল' এবং 'রঙ' নামে দুটি বিভাগ রয়েছে, তাই আমাদের আউটপুটে দুটি অবজেক্টের একটি বিন্যাস আশা করা উচিত -

 [ {গোষ্ঠী:'ফল', মান:[ 'কমলা', 'কলা', 'লেবু', 'আম' ] }, {গোষ্ঠী:'রঙ', মান:[ 'লাল', 'সবুজ', 'কমলা', 'নীল', 'লেবু'] }]

দ্রষ্টব্য − এই উদাহরণে আমাদের শুধুমাত্র দুটি বিভাগ আছে কিন্তু আমাদের একটি সমাধান লিখতে হবে যা একটি গতিশীল সংখ্যার জন্য কাজ করে এবং শুধুমাত্র দুটি নয়।

সুতরাং, আসুন এই সমস্যার একটি সমাধান তৈরি করি। আমরা Array.prototype.reduce() পদ্ধতি ব্যবহার করব এবং প্রতিটি সাবয়ারের জন্য আমরা পরীক্ষা করব যে আমাদের একটি বিদ্যমান গ্রুপ আছে কি না। যদি গোষ্ঠীটি বিদ্যমান থাকে, তাহলে আমরা নতুন মানটিকে এর মান সম্পত্তিতে পুশ করি অন্যথায় আমরা সেই গোষ্ঠীর জন্য একটি নতুন অবজেক্ট তৈরি করি এবং এটিকে অ্যারেতে পুশ করি৷

উদাহরণ

const data =[ ['কমলা', 'ফল'], ['লাল', 'রঙ'], ['সবুজ', 'রঙ'], ['কমলা', 'রঙ'], ['কলা' ', 'ফল'], ['নীল', 'রঙ'], ['লেবু', 'ফল'], ['আম', 'ফল'], ['লেবু', 'রঙ'],];কনস্ট groupData =arr => { রিটার্ন arr.reduce((acc, val) => { const [value, groupName] =val; const groupIndex =acc.findIndex(el => el?.group ===groupName); if( groupIndex !==-1){ acc[groupIndex].value.push(value); }else{ acc.push({ group:groupName, value:[value] }); } return acc; }, []); };console.log(groupData(data));

আউটপুট

কনসোলে আউটপুট হবে −

 [ {গোষ্ঠী:'ফল', মান:[ 'কমলা', 'কলা', 'লেবু', 'আম' ] }, {গোষ্ঠী:'রঙ', মান:[ 'লাল', 'সবুজ', 'কমলা', 'নীল', 'লেবু'] }]

  1. জাভাস্ক্রিপ্ট - অ্যারে অবজেক্টের দৈর্ঘ্য

  2. জাভাস্ক্রিপ্টে অ্যারেকে সেটে কীভাবে রূপান্তর করবেন?

  3. কিভাবে জাভাস্ক্রিপ্টে আইডি দ্বারা অবজেক্টের অ্যারে গ্রুপ করবেন?

  4. কিভাবে আমরা জাভাস্ক্রিপ্ট এ অবজেক্ট ধারণকারী অ্যারের অ্যারের মাধ্যমে লুপ করব?