কম্পিউটার

জাভাস্ক্রিপ্টে উপাদানগুলিকে গোষ্ঠীবদ্ধ করার এবং সদৃশ গণনা করার জন্য দক্ষ অ্যালগরিদম


আমরা অবজেক্টের একটি অ্যারে পেয়েছি। যদি বস্তুর একটি বৈশিষ্ট্য অন্য বস্তুর মতো একই হয়, তাহলে আমরা এটিকে একটি সদৃশ এন্ট্রি হিসেবে বিবেচনা করি৷

আমরা এই সম্পত্তির দ্বারা বস্তুগুলিকে গোষ্ঠীবদ্ধ করতে চাই এবং কতবার "ডুপ্লিকেট" ঘটেছে সে সম্পর্কে তথ্য সংরক্ষণ করতে চাই৷

   X A B O
   Y X Z I
   Y X Z U
   X A B L
   Y X Z K

আমরা প্রথম মান অনুসারে গ্রুপ করতে চাই।

প্রতিটি ডুপ্লিকেটেও আরও দুটি বৈশিষ্ট্য একই, তবে প্রথম মান তুলনা করাই যথেষ্ট।

আমাদের ব্যবহারকারীর কাছে এমন একটি ফলাফল প্রদর্শন করতে হবে যা −

এর মত দেখায়
   Y X Z (3)
   X A B (2)

উদাহরণ

এর জন্য কোড হবে −

const arr = [
   {x: 'x', acc: 'acc', val: 'val'},
   {y: 'y', x: 'x', z: 'z'},
   {y: 'y', x: 'x', z: 'z'},
   {x: 'x', c: 'c', val: 'val'}
];
const countOccurrence = (arr = []) => {
   const res = {};
   arr.forEach (item => {
      Object.keys( item ).forEach (prop => {
         ( res[prop] ) ? res[prop] += 1 : res[prop] = 1;
      });
   });
   return res;
}
const groupByOccurrence = (data = []) => {
   const obj = countOccurrence(data);
   const res = Object.keys ( obj ).reduce ( ( acc, val ) => {
      ( acc[obj[val]] ) ? acc[obj[val]].push ( val ) : acc[obj[val]] = [val];
      return acc;
   }, {});
   return res;
}
console.log(groupByOccurrence(arr));

আউটপুট

And the output in the console will be:
{ '1': [ 'acc', 'c' ], '2': [ 'val', 'y', 'z' ], '4': [ 'x' ] }

  1. জাভাস্ক্রিপ্টে স্পেস বিভক্ত উপাদানের ফ্রিকোয়েন্সি গণনার জন্য ফাংশন

  2. জাভাস্ক্রিপ্ট:সংলগ্ন উপাদান পণ্য অ্যালগরিদম

  3. জাভাস্ক্রিপ্টে GCD গণনার জন্য ইউক্লিডীয় অ্যালগরিদম

  4. জাভাস্ক্রিপ্টে অ্যারে উপাদানের সদৃশ সহ কমন