shift() মেথড শূন্যième ইন্ডেক্সের এলিমেন্টটি রিমুভ করে এবং বাকি ভ্যালুগুলোকে কনসেকিউটিভ ইন্ডেক্সে শিফট করে ডাউন করবে, তারপর রিমুভড ভ্যালু রিটার্ন করবে। লেন্থ ০ হলে undefined রিটার্ন করে।
pop() মেথড অ্যারের লাস্ট এলিমেন্টটি রিমুভ করে এবং সেটি রিটার্ন করে। এই মেথড অ্যারে লেন্থ পরিবর্তন করে।
উদাহরণ
let fruits = ['apple', 'mango', 'orange', 'kiwi'];
let fruits2 = ['apple', 'mango', 'orange', 'kiwi'];
console.log(fruits.pop()); // 'kiwi'
console.log(fruits2.shift()); // 'apple'
console.log(fruits); // ['apple', 'mango', 'orange']
console.log(fruits2); // ['mango', 'orange', 'kiwi']
আউটপুট
kiwi apple [ 'apple', 'mango', 'orange' ] [ 'mango', 'orange', 'kiwi' ]
দুটি অরিজিনাল অ্যারেই পরিবর্তিত হয়েছে (মিউটেট হয়েছে)।
পারফরম্যান্স নোট
shift() pop()-এর চেয়ে স্লোওয়ার, কারণ প্রথম এলিমেন্ট রিমুভ করার পর বাকি সব এলিমেন্টকে বামে শিফট করতে হয় (রিইন্ডেক্সিং)। pop() কেবল এন্ড থেকে রিমুভ করে, শিফটিং দরকার নেই।
সারসংক্ষেপ
| মেথড | পজিশন | রিটার্ন | মিউটেট করে? | স্পিড |
|---|---|---|---|---|
| push() | এন্ডে যোগ | নতুন লেন্থ | হ্যাঁ | ফাস্ট |
| unshift() | শুরুতে যোগ | নতুন লেন্থ | হ্যাঁ | স্লো |
| pop() | এন্ড থেকে রিমুভ | রিমুভড এলিমেন্ট | হ্যাঁ | ফাস্ট |
| shift() | শুরু থেকে রিমুভ | রিমুভড এলিমেন্ট | হ্যাঁ | স্লো |
ইমিউটেবল অ্যাল্টারনেটিভ
অরিজিনাল অ্যারে পরিবর্তন না করতে চাইলে: [...arr, newItem] (push), [newItem, ...arr] (unshift), arr.slice(0, -1) (pop), arr.slice(1) (shift)।