JavaScript-এ includes() দিয়ে এলিমেন্ট আছে কিনা চেক করে, splice() দিয়ে সেটি রিমুভ করা যায়। এটি অ্যারে ম্যানিপুলেশনের একটি সাধারণ প্যাটার্ন।
ফাংশন উদাহরণ
function removeElements(array, ...valuesToRemove) {
const toRemove = Array.from(valuesToRemove);
for (let i = 0; i < array.length; i++) {
if (toRemove.includes(array[i])) {
array.splice(i, 1); // ১ টি এলিমেন্ট রিমুভ
i--; // ইনডেক্স ঠিক রাখতে ডিক্রিমেন্ট
}
}
return array;
}
// ব্যবহার
console.log(removeElements([80, 90, 56, 34, 79], 90, 34, 79));
চলানোর পদ্ধতি
- কোডটি
removeDemo.jsনামে সংরক্ষণ করুন। - টার্মিনালে চালান:
node removeDemo.js
আউটপুট
[ 80, 56 ]
আধুনিক ও কনসাইজ পদ্ধতি (ES6+)
// ফাংশনাল পদ্ধতি (মূল অ্যারে অপরিবর্তিত)
const removeElements = (array, ...values) =>
array.filter(item => !values.includes(item));
console.log(removeElements([80, 90, 56, 34, 79], 90, 34, 79));
// [ 80, 56 ]
// অথবা Set ব্যবহার (দ্রুত লুকআপ)
const removeWithSet = (array, ...values) => {
const removeSet = new Set(values);
return array.filter(item => !removeSet.has(item));
};
সplice() vs filter() তুলনা
| পদ্ধতি | মিউটেশন | পারফরম্যান্স | ব্যবহার |
|---|---|---|---|
| splice (লুপে) | হ্যাঁ (মূল বদলে) | O(n×m) | ইন-প্লেস রিমুভ |
| filter() | না (নতুন অ্যারে) | O(n+m) | ফাংশনাল, সেফ |
| Set + filter | না | O(n+m) সেরা | বড় ডেটায় সেরা |
সতর্কতা
- লুপে splice করলে ইনডেক্স শিফট হয়, তাই
i--দরকার। - filter() নতুন অ্যারে রিটার্ন করে, মূল অ্যারে অপরিবর্তিত থাকে।
- বড় অ্যারে ও অনেক রিমুভের জন্য Set ভিত্তিক পদ্ধতি দ্রুত।