অ্যারে ম্যানিপুলেশনের ৫টি ফান্ডামেন্টাল মেথড
জাভাস্ক্রিপ্ট অ্যারে-এ এলিমেন্ট যোগ/বাদ দেওয়ার সবচেয়ে সাধারণ মেথডগুলো। এগুলো **মিউটেটর মেথড** — অর্থাৎ মূল অ্যারেটিই পরিবর্তন হয় (নতুন অ্যারে রিটার্ন করে না)।
মেথড ওভারভিউ
| মেথড | কাজ | রিটার্ন | মিউটেট করে? |
|---|---|---|---|
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); // ইনডেক্স ০-এ ৯৯ সেট করা কপি
এই নতুন মেথডগুলো আসল অ্যারে ছাড়া নতুন অ্যারে রিটার্ন করে — ফাংশনাল প্রোগ্রামিংয়ের জন্য আদর্শ।