Array.filter() मेथड
filter() मेथड एक नया ऐरे बनाता है जिसमें केवल वे एलिमेंट्स होते हैं जो टेस्ट फंक्शन को पास करते हैं। मूल ऐरे अपरिवर्तित रहता है।
सिंटैक्स
array.filter(callback(element, index, array), thisArg)
उदाहरण 1: सैलरी फिल्टर (≥ 19000)
<html> <body> <p id="demo"></p> <script>
var salaries = [2000, 30000, 69000, 70000, 78000];
function checkSal(sal) {
return sal >= 19000;
}
var filtered = salaries.filter(checkSal);
document.getElementById("demo").innerHTML = filtered;
</script> </body> </html>
आउटपुट
30000,69000,70000,78000
उदाहरण 2: पॉजिटिव नंबर फिल्टर करना
<html> <body> <script>
var numbers = [2, 3, 4, 5, -9, 0, -2, -5];
function isPositive(value) {
return value > 0;
}
var positiveNums = numbers.filter(isPositive);
document.write(positiveNums);
</script> </body> </html>
आउटपुट
2,3,4,5
आधुनिक एरो फंक्शन सिंटैक्स
<script>
var numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
// इवन नंबर्स
var evens = numbers.filter(n => n % 2 === 0);
// [2, 4, 6, 8, 10]
// स्ट्रिंग लेंथ फिल्टर
var words = ["सेब", "केला", "अंगूर", "आम"];
var longWords = words.filter(w => w.length > 2);
// ["केला", "अंगूर"]
// ऑब्जेक्ट्स फिल्टर
var users = [
{name: "अमित", age: 25, active: true},
{name: "सुमन", age: 17, active: false},
{name: "रोहन", age: 30, active: true}
];
var adults = users.filter(u => u.age >= 18);
// अमित, रोहन
</script>
चेनिंग: filter + map + reduce
<script>
var orders = [
{item: "लैपटॉप", price: 50000, qty: 1},
{item: "माउस", price: 500, qty: 3},
{item: "कीबोर्ड", price: 2000, qty: 2}
];
// 1000+ प्राइस वाले आइटम्स का टोटल
var total = orders
.filter(o => o.price > 1000)
.map(o => o.price * o.qty)
.reduce((sum, val) => sum + val, 0);
// 50000*1 + 2000*2 = 54000
</script>
महत्वपूर्ण नोट्स
- नया ऐरे लौटाता है - मूल ऐरे नहीं बदलता
- कॉलबैक को
true/falseलौटाना चाहिए - खाली ऐरे पर खाली ऐरे लौटाता है
- होल्स (खाली स्लॉट्स) को छोड़ देता है