Prototype.js Kılavuzu - 6

AJAX & Hazır Kütüphaneler orhan

.map

"collect" ile eşdeğerdir.

.max

Küme içindeki en büyük değeri (ya da en büyük sonucu veren işlemci değerini) verir. Eşit elemanlar için en sonuncuyu verir.

.member

"include" ile eşdeğerdir.

.min

Küme içindeki en küçük değeri (ya da en küçük sonucu veren işlemci değerini) verir. Eşit elemanlar için önce geleni verir.

.partition

Kümedeki elemanları iki parçaya ayırır. Birinci parçada değeri "true" olanlar, ikinci grupta ise koşulu sağlayamayan veya değeri "false" olanlar yer alır.

function Person(name, age) {

  this.name = name;

  this.age = age;

}

var john = new Person(’John’, 20);

var mark = new Person(’Mark’, 35);

var daisy = new Person(’Daisy’, 22);

[john, mark, daisy].max(function(person) {return person.age;})

// 35

[’hello’, null, 42, false, true, , 17].partition()
// [[’hello’, 42, true, 17], [null, false, undefined]]

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

// [[2, 4, 6, 8, 10], [1, 3, 5, 7, 9]]

.pluck

"collect" metodunun optimize edilmiş şeklidir. Küme elemanlarının her birine belirtilen bir işlemciyi uygular ve sonucu döndürür.

['hello', 'world', 'this', 'is', 'nice'].pluck('length')

// [5, 5, 4, 3, 4]

.reject

Küme elemanlarından işlemci sonucu dönen değeri "false" olanları verir.

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

// [1, 3, 5, 7, 9]

.select

"findAll" ile eşdeğerdir.

.size

Belirtilen kümenin (dizi, hash, ya da ObjectRange nesnesi) büyüklüğünü verir. Eğer karma bir kümeniz yoksa JavaScript’in olağan metodu olan "lenght" kullanımı performans açısından daha faydalı olabilir.

.sortBy

Kümeyi işlemci sonucu hesaplanan kritere göre sıralar.

['hello', 'world', 'this', 'is', 'nice'].sortBy(function(s) { return s.length; })

// ‘is’, ‘this’, ‘nice’, ‘hello’, ‘world’]

.toArray

Daha önce anlatılmıştı.

.zip

2 ve daha fazla dizi elemanlarını sıra numaraları çerçevesinde birebir eşler. Belirtilen işlemci çerçevesinde farklı sonuçlar elde edilebilir.

var firstNames = ['Justin', 'Mislav', 'Tobie', 'Christophe'];

var lastNames = [’Palmer’, ‘Marohni#’, ‘Langel’, ‘Porteneuve’];

var cities = [’Memphis’, ‘Zagreb’, ‘Montreal’, ‘Paris’];

firstNames.zip(lastNames)
// [ [’Justin’, ‘Palmer’], [’Mislav’, ‘Marohni#’], [’Tobie’, ‘Langel’],

// [’Christophe’, ‘Porteneuve’] ]

firstNames.zip(lastNames, function(a) { return a.join(’ ‘); })
// [’Justin Palmer’, ‘Mislav Marohni#’, ‘Tobie Langel’, ‘Christophe Porteneuve’]

firstNames.zip(lastNames, cities, function(p) {

  return p[0] + ‘ ‘ + p[1] + ‘, ‘ + p[2];

})
// [’Justin Palmer, Memphis’, ‘Mislav Marohni#, Zagreb’, ‘Tobie Langel, Montreal’,

// ‘Christophe Porteneuve, Paris’]

firstNames.zip($R(1, 100), function(a) { return a.reverse().join(’. ‘); })
// [’1. Justin’, ‘2. Mislav’, ‘3. Tobie’, ‘4. Christophe’]

$break ve $continue

JavaScript ve döngüler ile çalışırken "break" ve "continue" deyimleri ile döngünün herhangi bir yerinde işlemi sonlandırıp döngünün boş yere son değere kadar işlem yapmasını önleyebilirsiniz. Böylece büyük döngülerde meydana gelen zaman kaybını da engellemiş olursunuz. Prototype’ın yardımcı metotlarını kullanırken de benzer bir işlevi yerine getirmek için işlemciler içinde (iterator) "$break" ve "$continue" deyimlerini kullanabilirsiniz.

// 5 den küçük ve ikinin katları değerleri "result" isimli diziye yerleştirir.

var result = [];

$R(1,10).each(function(n) {

  if (0 == n % 2)

  throw $continue;
  if (n > 6)

  throw $break;

  result.push(n);

});
// result [1, 3, 5]

Not: Prototype 1.5 aday sürümü 1 (rc-1) den itibaren $break ve $continue kullanımı kaldırılmıştır. Bunların yerine yine klasik yöntemlerde olduğu üzere "return" ve "break" kullanımı önerilmektedir.

Sayfalar: 1 2

Toplamda 4546 kez okunmuş.
Şu an 1 kişi okuyor.
En fazla 4 kişi aynı anda okumuş.
Bugün 13 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ı