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

একই উপাদানগুলো সাব-অ্যারেতে গ্রুপ করা - JavaScript

অ্যারেতে একই মান वाले উপাদানগুলোকে একসাথে গ্রুপ করে সাব-অ্যারে তৈরি করা।

উদাহরণ

Input:  [234, 65, 65, 2, 2, 234]
Output: [[234, 234], [65, 65], [2, 2]]

সমাধান: Map/Object ব্যবহার (O(n))

const groupArray = (arr) => {
  const groups = new Map(); // বা {}
  const result = [];
  
  for (const item of arr) {
    if (groups.has(item)) {
      // ইতিমধ্যে গ্রুপ আছে, সেখানে পুশ করুন
      groups.get(item).push(item);
    } else {
      // নতুন গ্রুপ তৈরি
      const newGroup = [item];
      groups.set(item, newGroup);
      result.push(newGroup);
    }
  }
  
  return result;
};

// টেস্ট
console.log(groupArray([234, 65, 65, 2, 2, 234]));
// [[234, 234], [65, 65], [2, 2]]

console.log(groupArray(['a', 'b', 'a', 'c', 'b']));
// [['a', 'a'], ['b', 'b'], ['c']]

ফাংশনাল পদ্ধতি (reduce)

const groupArrayReduce = (arr) => {
  return Object.values(
    arr.reduce((groups, item) => {
      (groups[item] = groups[item] || []).push(item);
      return groups;
    }, {})
  );
};

বিকল্প: সোর্ট করে গ্রুপ (যদি অর্ডার মনো না হয়)

const groupSorted = (arr) => {
  return [...arr].sort().reduce((groups, item) => {
    const last = groups[groups.length - 1];
    if (last && last[0] === item) {
      last.push(item);
    } else {
      groups.push([item]);
    }
    return groups;
  }, []);
};

পারফরম্যান্স

পদ্ধতি সময় অর্ডার সংরক্ষণ
Map + Array O(n) হ্যাঁ (প্রথম উপস্থিতির অর্ডার)
Reduce + Object O(n) হ্যাঁ (ES2015+ এ)
Sort + Reduce O(n log n) না (সোর্টেড অর্ডার)

উৎপাদন

[ [ 234, 234 ], [ 65, 65 ], [ 2, 2 ] ]
  1. জাভাস্ক্রিপ্ট অ্যারেতে আইটেম অ্যাপেন্ড করার পদ্ধতি?

  2. জাভাস্ক্রিপ্টে Array.entries() মেথডের ব্যবহার কী

  3. জাভাস্ক্রিপ্ট array.entries() মেথড

  4. জাভাস্ক্রিপ্ট array.entries() মেথড