JavaScript & DOM & Hazır Kütüphaneler orhan
Diziler ve metinler: tüm programlama dillerinde önemli bir yere sahip bileşenlerdir. JavaScript kodlarken dizi ve metinler ile ilgili işlemleri Prototype ile oldukça pratik ve verimli bir yapıya sokmak mümkün. Bu bölümde dizi ve metinleri mercek altına alacağız.
Dizi (array) işlemleri
Dizi değişkenler de Prototype içinde unutulmamış. Diziler ile çalışırken adeta gelişmiş bir programlama dili kullanıyormuşçasına dizileri yönetebilmekteyiz. Geliştiricilerin Ruby‘ye hayranlıklarından olsa gerek metotların çoğu Ruby’dekiler ile aynı veya benzer işlevlere sahip. Başlıca metotlar şu şekilde:
.clear
Dizi değişkenin içini boşaltır boş bir dizi döndürür.
.clone
Dizi değişkenin bir kopyasını oluşturur. Orijinal diziyi değişmeden korur.
.compact
Dizi değişkenin "null" ve "undefined" değer içermeyen bir kopyasını döndürür.
['frank', , 'sue', , 'sally', null].compact()
// [’frank’, ’sue’, ’sally’]
.each
Dizi değişkenin her bir elemanı için belirtilen işlemin yapılmasını sağlar. Eğer belirtilen işlemcide (iterator) bir fonksiyon varsa fonksiyona parametre olarak on anki eleman ve elemanın sıra numarası gönderilir.
['elma', 'armut', 'kivi', 'çilek').each(function(fruit){
alert(’Canım ‘ + fruit + ‘ yemek istiyor’);
})
.first
Dizi değişkenin ilk elemanını döndürür. (dizi boş ise "undefined" verir)
.flatten
Dizi değişkenin düz (tek boyutlu halini) döndürür.
['frank', ['bob', 'lisa'], ['jill', ['tom', 'sally']]].flatten();
// [’frank’, ‘bob’, ‘lisa’, ‘jill’, ‘tom’, ’sally’]
.from
Resmi Prototype dokümantasyonuna bakınız.
.indexOf
Verilen değerin dizi değişken içinde kaçıncı sırada olduğunu döndürür. Eğer böyle bir değer yoksa -1 döndürür.
var nums = [3, 5, 6, 1, 20];
nums.indexOf(6);
// 2
[0, false, 15].indexOf(false)
// 1 yerine 0 verir, çünkü 0 == false
.inspect
Dizinin hata ayıklama yöntemine uygun şeklini döndürür.
['Apples', {good: 'yes', bad: 'no'}, 3, 34].inspect()
// "[’Apples’, [object Object], 3, 34]"
.last
Dizi değişkenin son elemanını döndürür. (dizi boş ise "undefined" verir)
.reduce
Resmi Prototype dokümantasyonuna bakınız.
.reverse
Dizi değişkeni o anki sıralamasının tam tersine geri sıralar.
var nums = [3, 5, 6, 1, 20];
nums.reverse(false) // [20, 1, 6, 5, 3];
// nums = [3, 5, 6, 1, 20]
// inline değeri false ise orijinal dizi korunur
nums.reverse() // [20, 1, 6, 5, 3];
// nums = [20, 1, 6, 5, 3]
.size
Dizi değişkenin boyutunu (kaç elemanı olduğunu) verir.
.toArray
Bir nesneyi dizi değişken haline getirir. Karma kümeleri $A() fonksiyonu ile kullanabilmek için bu metot kullanılabilir.
$R(1, 5).toArray();
// [1, 2, 3, 4, 5]
.uniq
Dizi değişkenin tekrarlayan değerleri olmayan bir kopyasını oluşturur. Büyük-küçük harf duyarlılığı mevcuttur.
['Sam', 'Justin', 'Andrew', 'Dan', 'Sam'].uniq();
// [’Sam’, ‘Justin’, ‘Andrew’, ‘Dan’]
.without
Dizi değişkenin belirtilen değerleri içermeyen bir kopyasını oluşturur.
[3, 5, 6, 1, 20].without(20, 6)
// [3, 5, 1]
Prototype geliştiricileri; çok elemanlı dizi değişkenler ile çalışırken, özellikle ihtiyaç duyulmadığı sürece, Prototype’ın yardımcı metotları yerine olağan JavaScript fonksiyonlarının kullanımının performans bakımından daha verimli olacağını belirtiyorlar. Eğer bu tür büyük dizi değişkenler ile çalışıyorsanız aşağıdaki gibi bir "for" döngüsü daha hızlı çalışacaktır. Bu tür döngülerde dizi boyutu bilgisini bir değişkene atayarak arttırma işlemini değişkenden önce yapmak performansı olumlu etkileyecektir. (Sürüm 1.5 rc-1 de bu tür performans sorunları büyük ölçüde giderilmiştir)
for (var index = 0, len = myArray.length; index < len; ++index) {
var item = myArray[index];
// işlemleri yöneten kodlarınız burada çalışacak…
}
Toplamda 6220 kez okunmuş.
Şu an 1 kişi okuyor.
En fazla 7 kişi aynı anda okumuş.
Bugün 7 kez okunmuş.
Etiketler: javascript, prototype
Trackback Yorumları takip et Baskı Önizleme

(5 oy, ortalama 4.6)
# grkn | 19 Nisan 2007, 18:54
teşekkürler..
# Umut | 19 Nisan 2007, 23:07
Bu Yazı Dizisi Gerçekten Çook Güzel Teşekkürler . . .
# ayşe | 27 Nisan 2007, 22:46
Teşekkürler…
Konu ile ilgisi yok ama normalize() ne işe yarıyor. Mesajla cevap verebilir misin?
# eburhan | 27 Nisan 2007, 22:52
Prototype.js içerisindeki normalize() yöntemi ile bir formdaki değerleri kullanarak kolayca sorgu cümlesi hazırlayabilirsiniz.
Örneğin bir Form içerisinde şu alanlar olsun:
İsim: <input type="text" name="isim" value="Erhan">
Mail: <input type="text" name="mail" value="deneme@deneme.com">
Bu alanlara girilen değerleri AJAX ile sunucu tarafındaki bir sayfaya gönderirken isim=Erhan&mail=deneme@deneme.com şeklinde bir sorgu cümleciği hazırlamanız gerekiyor. İşte normalize() yöntemi bu sorgu cümleciğini bizim yerimize otomatik olarak oluşturma görevini üsteleniyor.
# ayşe | 19 Mayıs 2007, 22:25
Teşekkürler Erhan Hocam,
evalScript() fonksiyonunu denedim çalışmadi. Script kapatma etiketinin önüne \ getirince çalıştı.Böyleydi:
Böyle yaptım:
var metin = ‘lorem… 2 + 2′.evalScripts();
alert(metin); // 4