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

জাভাস্ক্রিপ্ট বেসিক অ্যারে মেথড: push, pop, shift, unshift, splice

অ্যারে ম্যানিপুলেশনের ৫টি ফান্ডামেন্টাল মেথড

জাভাস্ক্রিপ্ট অ্যারে-এ এলিমেন্ট যোগ/বাদ দেওয়ার সবচেয়ে সাধারণ মেথডগুলো। এগুলো **মিউটেটর মেথড** — অর্থাৎ মূল অ্যারেটিই পরিবর্তন হয় (নতুন অ্যারে রিটার্ন করে না)।

মেথড ওভারভিউ

মেথডকাজরিটার্নমিউটেট করে?
push(...items)এন্ডে এক বা একাধিক এলিমেন্ট যোগনতুন লেথ✅ হ্যাঁ
pop()এন্ড থেকে শেষ এলিমেন্ট সরিয়ে ফেলেসরানো এলিমেন্ট (undefined যদি খালি)✅ হ্যাঁ
unshift(...items)শুরুতে এক বা একাধিক এলিমেন্ট যোগনতুন লেথ✅ হ্যাঁ
shift()শুরু থেকে প্রথম এলিমেন্ট সরিয়ে ফেলেসরানো এলিমেন্ট (undefined যদি খালি)✅ হ্যাঁ
splice(start, deleteCount, ...items)কোনো পজিশন থেকে এলিমেন্ট সরিয়ে/যোগ করুনসরানো এলিমেন্টগুলোর অ্যারে✅ হ্যাঁ

দ্রুত উদাহরণ

let arr = ['A', 'B', 1, 2, 3, 5];
console.log('শুরু:', arr); // ['A', 'B', 1, 2, 3, 5]

arr.pop();           // শেষ এলিমেন্ট (5) সরানো
console.log('pop:', arr); // ['A', 'B', 1, 2, 3]

arr.push(22);        // শেষে 22 যোগ
console.log('push:', arr); // ['A', 'B', 1, 2, 3, 22]

arr.shift();         // প্রথম এলিমেন্ট ('A') সরানো
console.log('shift:', arr); // ['B', 1, 2, 3, 22]

arr.unshift(55);     // শুরুতে 55 যোগ
console.log('unshift:', arr); // [55, 'B', 1, 2, 3, 22]

arr.splice(3, 0, 'D', 'E', 'F'); // ইনডেক্স ৩-এ ০ সরে, 'D','E','F' যোগ
console.log('splice:', arr); // [55, 'B', 1, 'D', 'E', 'F', 2, 3, 22]

splice() — সবচেয়ে শক্তিশালী মেথড

splice(start, deleteCount, ...items)

  • start: ইনডেক্স (নেগেটিভ হলে শেষ থেকে গণনা)।
  • deleteCount: কতগুলো সরাবে (০ হলে কিছুই সরে না — শুধু ইনসার্ট)۔
  • ...items: ইনসার্ট করার এলিমেন্টগুলো (ঐচ্ছিক)۔

splice উদাহরণ

const fruits = ['Apple', 'Banana', 'Cherry', 'Date'];

// ১. রিপ্লেস: ইনডেক্স ১ থেকে ১টা সরে 'Blueberry' যোগ
fruits.splice(1, 1, 'Blueberry'); // ['Apple', 'Blueberry', 'Cherry', 'Date']

// ২. ইনসার্ট: ইনডেক্স ২-এ ০ সরে 'Mango' যোগ
fruits.splice(2, 0, 'Mango'); // ['Apple', 'Blueberry', 'Mango', 'Cherry', 'Date']

// ৩. ডিলিট: ইনডেক্স ০ থেকে ২টা সরে
const removed = fruits.splice(0, 2); // removed: ['Apple', 'Blueberry']
// fruits: ['Mango', 'Cherry', 'Date']

// ৪. অ্যারে ক্লিয়ার
fruits.splice(0); // []

ইমিউটেবল বিকল্প (নন-মিউটেটিং) — আধুনিক রিয়েক্ট/রিডাক্স স্টাইলে

মিউটেটিংইমিউটেবল বিকল্প
arr.push(x)[...arr, x] বা arr.concat(x)
arr.pop()arr.slice(0, -1)
arr.unshift(x)[x, ...arr]
arr.shift()arr.slice(1)
arr.splice(i, 1)[...arr.slice(0,i), ...arr.slice(i+1)]
arr.splice(i, 0, x)[...arr.slice(0,i), x, ...arr.slice(i)]

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

  • push/pop: **O(1)** — এন্ডে কাজ করে, দ্রুত।
  • unshift/shift: **O(n)** — সব এলিমেন্ট শিফট করতে হয়, বড় অ্যারেতে ধীর।
  • splice: **O(n)** — শিফটিং ইনভলভড।
  • বড় অ্যারে (১০০০০+) এ ফ্রিকোয়েন্ট shift/unshift এড়ান — deque প্যাটার্ন বা লিংকড লিস্ট ব্যবহার করুন।

সামान्य ভুল এড়ান

  • arr = arr.push(x) — ভুল! push লেথ রিটার্ন করে, অ্যারে না। শুধু arr.push(x) লিখুন।
  • splice-এ deleteCount ভুল দিয়ে অনিচ্ছাকৃত ডিলিট।
  • লুপের ভিতরে splice ব্যবহার করলে ইনডেক্স শিফট হয় — উল্টা লুপ (`for (let i = arr.length-1; i>=0; i--)`) বা filter ব্যবহার করুন।

ES2023 নতুন মেথড (ইমিউটেবল)

// Stage 3 / ES2023 - বর্তমানে সাপোর্টেড (Chrome 110+, Firefox 104+, Safari 16+)
const arr = [1, 2, 3];

arr.toSorted((a,b) => a-b);      // সর্টেড কপি
arr.toReversed();                // রিভার্সড কপি
arr.toSpliced(1, 1, 99);         // স্প্লাইসড কপি
arr.with(0, 99);                 // ইনডেক্স ০-এ ৯৯ সেট করা কপি

এই নতুন মেথডগুলো আসল অ্যারে ছাড়া নতুন অ্যারে রিটার্ন করে — ফাংশনাল প্রোগ্রামিংয়ের জন্য আদর্শ।

  1. জাভাস্ক্রিপ্টে অ্যারে খালি কীভাবে করবেন?

  2. জাভাস্ক্রিপ্টে অ্যারে খালি করার উপায়

  3. জাভাস্ক্রিপ্ট Array.prototype.map() ফাংশন

  4. জাভাস্ক্রিপ্ট অবজেক্টের অ্যারেতে অ্যারে মেথডগুলো ব্যবহার করা