Prototype.js Kılavuzu - 6

AJAX & Hazır Kütüphaneler orhan

Sayılabilir İfadelerin Yönetimi (Enumerable): Sayılabilir ifadeler demek ne derece doğru bilemiyorum ama geliştiriciler öyle demiş ne diyelim. Bu metotların içeriğine gelince; bir dizi veya "RangeObject" olarak tabir ettiğimiz gruplanmış anlamlı ifadeler kümesinin yönetimi ve düzenlenmesi için kullanılan yardımcılardır.

Aslında işlev itibari ile dizi değişken metotlarına benzerlik göstermekle beraber bazı ortak metotlara da sahipler. (each, size gibi) Metotların tam olarak ne işe yaradıkları ve açıklayıcı örnekler için resmi Prototype API dokümantasyonuna göz atabilirsiniz. Burada kısaca metotların işlevlerinden bahsedeceğiz.

.all

Bir küme içerisindeki tüm değerlerin "true" değerine eşit olup olmadığını kontrol eder. Eğer koşulu sağlamayan bir değer varsa ya da değerlerden biri "false" ise sonuç olarak "false" döndürür. Boş kümeler "true" verir.

[0, 1, 2].all()
// false (sadece bir döngü sonunda "false" verir)

.any

Küme içerisindeki en azından bir değerin "true" koşulunu sağlayıp sağlamadığını kontrol eder. Eğer koşula uyan bir eleman dahi varsa sonuç olarak "true" verir.

$R(0, 2).any()

// true (ikinci döngüde 2=true)

$H({ opt1: null, opt2: false, opt3: ‘’, opt4: ‘pfew!’ }).any(function(pair) { return pair.value; })
// true (sadece "opt4" geçerli olsa bile sonuç olarak "true" verir)

.collect

"map" ile eşdeğerdir. Tüm küme elemanlarına belirtilen işlemci (iterator) sonucunu uygular.

$R(1,5).collect(function(n) {return n * n;})

// [1, 4, 9, 16, 25]

.detect

"find" ile eşdeğerdir.

.each

Daha önce anlatılmıştı.

.entries

"toArray" ile eşdeğerdir.

.find

"detect" ile eşdeğerdir. Küme elemanlarından uygulanan işlemcide "true" veren ilk değeri döndürür. "findAll" metodunun belirtilen koşula uyan ilk değeri döndüren kısa döngü şeklinde olanıdır.

// Opsiyonel ve bir koşula göre asal sayı tespiti

function isPrime(n) {
if (2 > n) return false;

if (0 == n % 2) return (2 == n);
for (var index = 3; n / index > index; index += 2)

if (0 == n % index) return false;

return true;

}

$R(10,15).find(isPrime)

// 11

.findAll

Küme elemanları içinde işlemcide "true" koşulunu sağlayan tüm değerleri döndürür.

$R(1, 10).findAll(function(n) { return 0 == n % 2; })

// [2, 4, 6, 8, 10]

.grep

Küme elemanlarından düzenli ifade (regular expression) deyimine uyan bütün elemanları döndürür.

$('myTable').descendants().grep(/t[dh]/, function(node) {

return node.tagName.toLowerCase();

})

// sadece tablo içindeki td/th elemanları

.include

"member" ile eşdeğerdir. Bir elemanın belirtilen küme içerisinde olup olmadığını kontrol eder. Kontrol "==" operatörü ile yapılır. (Buradaki eşitlik operatörü "===" değildir. Yani tam eşitlik değil sadece değer eşitliği kontrol edilir.)

['hello', 'world'].include('HELLO')

// false

[1, 2, ‘3′, ‘4′, ‘5′].include(3)

// true (== tırnaklı yazımı yok sayar, sadece değerin eşit olup olmadığına bakar)

.inject

Belirtilen işlemcinin sonucundan başarılı dönen değerler doğrultusunda, artarak ilerleyen bir sonuç inşa eder. Genelde bir kümeden veya dizi den başka bir dizi üretmek için kullanılır.

var array1 = [];

var array2 = [1, 2, 3].inject(array1, function(array, value) {

array.push(value * value);

return array;

});

array2

// [1, 4, 9]

array1

// [1, 4, 9]

array2.push(16);

array1

// [1, 4, 9, 16]

.invoke

"each" ve "collect" metotlarının biraz daha optimize edilmiş şeklidir. Bütün küme elemanlarına aynı fonksiyonu aynı parametreler ile uygular. Kullanım açısından daha düzenli bir yapıya sahiptir.

['hello', 'world', 'cool!'].invoke('substring', 0, 3)

// [’hel’, ‘wor’, ‘coo’]

Sayfalar: 1 2

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

Etiketler:

1 oy2 oy3 oy4 oy5 oy (12 oy, ortalama 4.42) 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

7 yorum var

  1. # ayşe | 01 Mayıs 2007, 16:36 Gravatar

    Teşekkürler…
    .reject fonksiyonunda mesaj kutusunun [1, 3, 5, 7, 9] göstermesini sağlayamadım. Nasıl olacaktı?

  2. # ayşe | 01 Mayıs 2007, 17:02 Gravatar

    Sorun halloldu.
    var dizi = $R(1, 10).reject(function(n) { return 0 == n % 2; })
    alert(dizi); // 1,3,5,7,9

  3. # ayşe | 01 Mayıs 2007, 17:20 Gravatar

    Numarayı stringe çevirebiliyorum.
    var a = 1234 ;
    alert(typeof(a)); // number
    var b = a.toString();
    alert(typeof(b)); // string

    alert(a==b); // true
    alert(a===b); // false

    Ama stringi numaraya çeviremiyorum. Nasıl yapmam gerekiyor?

  4. # orhan | 03 Mayıs 2007, 10:42 Gravatar

    Prototype içinde varmı böyle bir olay tam hatırlamıorum ama JavaScript için değişkenin değerini etkilemeyecek aritmetik işlemler ile bunu yapabiliyoruz

    var numValue = stringValue - 0;
    /* veya */
    var numValue = stringValue * 1;
    /* veya */
    var numValue = stringValue / 1;

    bir diğer yöntem de

    var numValue = Number(stringValue);

    http://www.jibbering.com/faq/faq_notes/type_convert.html

  5. # ayşe | 03 Mayıs 2007, 23:39 Gravatar

    Teşekkürler…

  6. # ayşe | 05 Mayıs 2007, 12:28 Gravatar

    Dizidekilerin toplamını buluyorduk. Ama hangisi ile yaptığımızı hatırlayamadım.
    var dizi = [1,2,3,4,5]
    alert(dizidekilerin toplamı) // 15

  7. # eburhan | 05 Mayıs 2007, 12:36 Gravatar

    $R(1,5).inject(0, function(acc, n) { return acc + n; }) şeklinde toplayabilirsiniz.

    Ayrıca buradan api dökümanını indirebilirsiniz. Unuttuğunuz birşey olduğunda hızlıca bakabilirsiniz.

Yorum yazın

sayfa sayacı