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

অ্যারে থেকে ডুপ্লিকেট উপাদান একবার করেই বের করা - JavaScript

একই মান একাধিকবার রিপিট হয়েছে এমন উপাদানগুলো শুধুমাত্র একবার করে সংগ্রহ করা।

উদাহরণ

input:  [1, 4, 3, 3, 1, 3, 2, 4, 2, 1, 4, 4]
output: [1, 4, 3, 2] // শুধু যেসব একাধিকবার এসেছে

সমাধান

const pickDuplicates = (arr) => {
  const seen = new Set();
  const duplicates = new Set();
  
  for (const item of arr) {
    if (seen.has(item)) {
      duplicates.add(item);
    } else {
      seen.add(item);
    }
  }
  
  return [...duplicates];
};

// বিকল্প: indexOf/lastIndexOf (স্লোয়ার)
const pickDuplicatesSlow = (arr) => {
  const result = [];
  for (let i = 0; i < arr.length; i++) {
    if (arr.indexOf(arr[i]) !== arr.lastIndexOf(arr[i])) {
      if (!result.includes(arr[i])) {
        result.push(arr[i]);
      }
    }
  }
  return result;
};

// ফ্রিকোয়েন্সি ম্যাপ ব্যবহার (বহুতর ইনফো দরকার হলে)
const pickDuplicatesWithCount = (arr) => {
  const freq = new Map();
  
  for (const item of arr) {
    freq.set(item, (freq.get(item) || 0) + 1);
  }
  
  return [...freq.entries()]
    .filter(([_, count]) => count > 1)
    .map(([item]) => item);
};

// টেস্ট
const arr = [1, 4, 3, 3, 1, 3, 2, 4, 2, 1, 4, 4];
console.log(pickDuplicates(arr));              // [1, 4, 3, 2]
console.log(pickDuplicatesWithCount(arr));     // [1, 4, 3, 2]

পারফরম্যান্স তুলনা

পদ্ধতি সময় জটিলতা নোট
Set (দুইবার) O(n) সেরা পারফরম্যান্স
Map (ফ্রিকোয়েন্সি) O(n) কাউন্ট ও পাওয়া যায়
indexOf/lastIndexOf O(n²) বড় অ্যারে জন্য ধীর

উৎপাদন

[1, 4, 3, 2]
  1. জাভাস্ক্রিপ্ট রেজেক্স: শুধু নম্বর, লেটার ও আন্ডারস্কোর ভ্যালিডেশন

  2. জাভাস্ক্রিপ্ট দিয়ে DOM আপডেট করা

  3. জাভাস্ক্রিপ্ট প্রোগ্রাম: ২৪ ঘন্টা ফরম্যাট থেকে ১২ ঘন্টা ফরম্যাটে রূপান্তর

  4. জাভাস্ক্রিপ্টে স্ট্রিং-এ একাধিক স্পেসকে একক স্পেসে রূপান্তর