
Örneğe geçmeden önce şunu da belirtmem lazım ki, çoğu programlama dilinde var olan lambda expression'lar JavaScript dilinde olmasa da, JavaScript dilinin esnekliği buna benzer bir yapı kullanmamıza imkan sağlıyor. Lambda Expression konusuna bakarsanız diziler içinde arama yada filtreleme yapmak için en kısa yazım şekli, okunabilir ve profesyonel kod yazma şekli olduğunu görebilirsiniz. JavaScript dilinde filter kullınımı örneği için biz de bu yapıya benzer bir yazılım tarzı kullanacağız. Aşağıdaki gibi bir dizimiz olduğunu düşünün.
scope.KlasorListesi=[
{
KlasorID: 1,
KlasorAdi: "İnformation Universe Of ALizade ZADE",
UstKlasorID: 1,
Seviye: 0
},
{
KlasorID: 2,
KlasorAdi: "Detay",
UstKlasorID: 1,
Seviye: 1
},
{
KlasorID: 3,
KlasorAdi: "Deneme",
UstKlasorID: 1,
Seviye: 1
},
{
KlasorID: 3,
KlasorAdi: "Test",
UstKlasorID: 2,
Seviye: 2
}
];
Filter örneğini anlatmak için ilk filtre olarak seviyesi 1 olan dizi elamanlarını bulalım. Bunun için aşağıdaki gibi bir ifade kullanabiliriz.
scope.KlasorListesi = scope.KlasorListesi.filter(function (x) { return x.Seviye == 1; });
Bu yazım şekli bize seviyesi 1 olan dizi elemanlarını döndürecektir. Görüldüğü gibi bu yazılım şekli diğer dillerde olan lambda expression mantığına çok yakındır. Bu yazılıma aynı zamanda JavaScript dilinde Lambda Expression kullanımı da diyebiliriz. Örneği tam olarak anlayabilmek için isterseniz bu dizi üzerinde bir tane daha filtre kullanalım. Bu sefer isterseniz Seviyesi 1 olan ve UsKlasorID bilgisi 1 olan bir filtre uygulayalım. Bunun için aşağıdaki gibi bir ifade yazabilirsiniz.
scope.KlasorListesi = scope.KlasorListesi.filter(function (x) { return x.Seviye == 1 && x.UstKlasorID==1; });
Normal metotlarda döngüler, aynı zamanda if else yapıları kullanmak yerine basitçe tek satırda işlemlerinizi halledebiliyorsunuz. Ayrıca kod kalabalığından ve karmaşasından da kurtulmuş oluyorsunuz. Bu yazım şeklini kullanmak aynı zamanda kodunuzu okuyanların da sizinle ilgili görüşlerini değiştirecektir. Filter kullanmak aynı zamanda zevklidir. Çok özelliği olan dizilerde kendinizi sql sorguu yazıyormuşsunuz gibi hissedersiniz.
Not: Framework olarak AngularJS kullandığım için değişken tanımlamalarımı da buna göre yaptım. Sorabilirsiniz neden AngularJS içindeki filter mantığını kullanmadın diye. Aslında bu konu da önemli çünkü AngularJS içinde var olan filter mantığını kullanmak için biraz çaba sarfetmek lazım. Javascript içindeki kod filter yapını kullanmak genelde bir seferde kullanmak için uygundur. Ama çok fazla yerde kullanacağınız filtre işlemleri için framework içinde bulunan filtre mantığını yada var olan hazır filtreleri kullanabilirsiniz.
Yorumlar
Yorum Gönder