Prototype.js Kılavuzu - 5

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…

}

Sayfalar: 1 2 3

Toplamda 6189 kez okunmuş.
Şu an 1 kişi okuyor.
En fazla 7 kişi aynı anda okumuş.
Bugün 4 kez okunmuş.

Etiketler:

1 oy2 oy3 oy4 oy5 oy (5 oy, ortalama 4.6) Oylanıyor ... Oylanıyor ...

  1. PHP ve Yerleşik DOM Sınıfları
  2. Javascript Sanal Klavye Yapalım
  3. Ajax Olmasaydı Ne Yapardık ? :)

Trackback Yorumları takip et Baskı Önizleme

5 yorum var

  1. # grkn | 19 Nisan 2007, 18:54 Gravatar

    teşekkürler..

  2. # Umut | 19 Nisan 2007, 23:07 Gravatar

    Bu Yazı Dizisi Gerçekten Çook Güzel Teşekkürler . . .

  3. # ayşe | 27 Nisan 2007, 22:46 Gravatar

    Teşekkürler…
    Konu ile ilgisi yok ama normalize() ne işe yarıyor. Mesajla cevap verebilir misin?

  4. # eburhan | 27 Nisan 2007, 22:52 Gravatar

    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.

  5. # ayşe | 19 Mayıs 2007, 22:25 Gravatar

    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

Yorum yazın

sayfa sayacı