filter() मेथड के साथ toLowerCase() या toUpperCase() का उपयोग करके केस-इनसेंसिटिव (बड़े/छोटे अक्षर नजरअंदाज करके) सबस्ट्रिंग मिलान करके ऑब्जेक्ट्स की ऐरे फिल्टर करें।
डेटा सेटअप
const students = [
{ studentName: "John Smith" },
{ studentName: "john smith" },
{ studentName: "Carol Taylor" },
{ studentName: "JOHN SMITH" },
{ studentName: "David Johnson" }
];
विधि 1: toLowerCase() के साथ indexOf()
const searchName = "John Smith";
const results = students.filter(obj =>
obj.studentName.toLowerCase().indexOf(searchName.toLowerCase()) >= 0
);
console.log(results);
// आउटपुट:
// [ { studentName: 'John Smith' },
// { studentName: 'john smith' },
// { studentName: 'JOHN SMITH' } ]
विधि 2: toLowerCase() के साथ includes() (मॉडर्न, अधिक पठनीय)
const searchName = "john";
const results = students.filter(obj =>
obj.studentName.toLowerCase().includes(searchName.toLowerCase())
);
console.log(results);
// सभी जॉन नाम वाले मिलेंगे
विधि 3: रेगुलर एक्सप्रेशन के साथ (शक्तिशाली)
const searchTerm = "john smith";
const regex = new RegExp(searchTerm, "i"); // "i" फ्लैग = केस-इनसेंसिटिव
const results = students.filter(obj => regex.test(obj.studentName));
console.log(results);
पुन: प्रयोज्य फंक्शन
function filterBySubstring(array, property, searchTerm) {
if (!searchTerm) return array; // खोज खाली तो सभी लौटाएं
const term = searchTerm.toLowerCase();
return array.filter(item =>
item[property] && item[property].toLowerCase().includes(term)
);
}
// उपयोग
const filtered = filterBySubstring(students, "studentName", "JOHN");
console.log(filtered);
चलाने का तरीका
node filter-demo.js
आउटपुट
[
{ studentName: 'John Smith' },
{ studentName: 'john smith' },
{ studentName: 'JOHN SMITH' }
]
प्रदर्शन टिप
बड़ी ऐरे के लिए, खोज टर्म को एक बार toLowerCase() करें, लूप के अंदर नहीं:
// ✅ अच्छा - खोज टर्म एक बार लोअरकेस
const term = searchName.toLowerCase();
const results = students.filter(obj => obj.studentName.toLowerCase().includes(term));
// ❌ खराब - हर इटरेशन में लोअरकेस
const results = students.filter(obj => obj.studentName.toLowerCase().includes(searchName.toLowerCase()));