JavaScript-এ filter() এবং includes() কম্বাইন করে অ্যারে থেকে নির্দিষ্ট মানগুলো বাদ দিয়ে বাকিগুলো রাখা যায়। এটি "ব্ল্যাকলিস্ট" ফিল্টারিং-এর জন্য আদর্শ।
ডেটা
const names = ['John', 'David', 'Mike', 'Sam', 'Carol', 'Bob'];
ফিল্টার কোড
// David, Mike, Sam, Carol বাদ দিয়ে বাকি রাখুন
var filtered = names.filter(name => !['David', 'Mike', 'Sam', 'Carol'].includes(name));
console.log("ফিল্টার után:", filtered);
চলানোর পদ্ধতি
- কোডটি
filterInclude.jsনামে সংরক্ষণ করুন। - টার্মিনালে চালান:
node filterInclude.js
আউটপুট
ফিল্টার után: [ 'John', 'Bob' ]
ব্যাখ্যা
includes()চেক করে নাম ব্ল্যাকলিস্টে আছে কিনা।!(NOT) দিয়ে উল্টো ফলাফল নেওয়া হয় (যে নেই, সেগুলো রাখো)।filter()নতুন অ্যারে রিটার্ন করে, মূল অ্যারে অপরিবর্তিত।
আধুনিক প্যাটার্ন: Set ব্যবহার (দ্রুত)
const exclude = new Set(['David', 'Mike', 'Sam', 'Carol']);
const filtered = names.filter(name => !exclude.has(name));
বিপরীত: শুধু নির্দিষ্ট মান রাখা (Whitelist)
const allowed = new Set(['John', 'Bob']);
const whitelist = names.filter(name => allowed.has(name));
// ['John', 'Bob']
অবজেক্ট অ্যারে জন্য
const users = [
{ name: 'John', role: 'admin' },
{ name: 'David', role: 'user' },
{ name: 'Bob', role: 'admin' }
];
const admins = users.filter(u => u.role === 'admin');
// [{name: 'John', role: 'admin'}, {name: 'Bob', role: 'admin'}]
পারফরম্যান্স টিপস
- বড় অ্যারে ও বড় এক্সক্লুড লিস্টের জন্য
Setব্যবহার করুন (O(1) লুকআপ)। includes()হলো O(n),Set.has()হলো O(1)।- ফাংশনাল পদ্ধতি (filter) রিডেবল ও বাগ-ফ্রি।