Array Metotları (map, filter)
Array Metotları (map, filter): .filter() Pipeline — Çift Sayıları Eler JavaScript array metodları, bir fabrika montaj hattındaki özelleşmiş istasyonlar gibidir: ham malzeme giriy
.filter() Pipeline — Çift Sayıları Eler
JavaScript array metodları, bir fabrika montaj hattındaki özelleşmiş istasyonlar gibidir: ham malzeme giriyor, her istasyon kendi işini yapıyor, işlenmiş ürün çıkıyor. `map()` boyama istasyonu — her elemanı dönüştürür, sayı aynı kalır. `filter()` kalite kontrol kapısı — geçemeyenleri geri çevirir, sayı azalabilir. `reduce()` paketleme presi — tüm elemanları tek değere sıkıştırır. Peki neden bunlar önemli? Java'da aynı işi yapabilirsin: `Stream.map()`, `Stream.filter()`, `Stream.reduce()` ile. Ama JavaScript'te bu metodlar dizi üzerinde doğrudan zincirlenir: `testResults.filter(t => t.status === 'failed').map(t => t.name)` — başarısız testlerin isimlerini tek satırda alırsın. QA'da kritik kullanım: API yanıtındaki object array'ini işlemek, test verisi filtrelemek, çoklu locator sonuçlarından koşullu seçim yapmak hep bu metodlarla yapılır.
Array map & filter Örnekleri
const fruits = ['🍎', '🍏', '🍊', '🍍']; // 1. map() ile her meyveyi meyve suyuna dönüştür const juices = fruits.map(fruit => fruit + '🥤'); console.log(juices); // ['🍎🥤', '🍏🥤', '🍊🥤', '🍍🥤'] // 2. filter() ile sadece elma olanları seç const apples = fruits.filter(fruit => fruit === '🍎' || fruit === '🍏'); console.log(apples); // ['🍎', '🍏']
Micro Lab: JavaScript QA kod yazma
TODO satirini beklenen cozumdeki kritik satirla degistir. Bu gercek runtime degil; amac dogru yapinin yazilmasini kontrollu olarak pekistirmek.
🎬 .map() ve .filter() Zinciri: Orijinal Diziye Neden Hiç Dokunulmaz?
testResults (Orijinal)
Yeni Dizi: passedTests
Yeni Dizi: testNames
forEach + push (Mutasyon Riski)
`testResults` dizisi 3 test sonucu içeriyor: Login (passed), Payment (failed), Signup (passed). Bu diziyi filtrelemek ve isimlerini çıkarmak istiyoruz.
`.filter(test => test.status === "passed")` çağrılır. `testResults` HİÇ değişmez — filter, koşulu geçenleri kopyalayarak TAMAMEN YENİ bir dizi oluşturur.
Sonuç: `passedTests` — sadece Login ve Signup içeren YENİ ve BAĞIMSIZ bir dizi. `testResults` hâlâ orijinal 3 elemanıyla sapasağlam duruyor.