অ্যারেতে একই মান वाले উপাদানগুলোকে একসাথে গ্রুপ করে সাব-অ্যারে তৈরি করা।
উদাহরণ
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 ] ]