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: javascript, prototype
Trackback Yorumları takip et Baskı Önizleme

(12 oy, ortalama 4.42)
# ayşe | 01 Mayıs 2007, 16:36
Teşekkürler…
.reject fonksiyonunda mesaj kutusunun [1, 3, 5, 7, 9] göstermesini sağlayamadım. Nasıl olacaktı?
# ayşe | 01 Mayıs 2007, 17:02
Sorun halloldu.
var dizi = $R(1, 10).reject(function(n) { return 0 == n % 2; })
alert(dizi); // 1,3,5,7,9
# ayşe | 01 Mayıs 2007, 17:20
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?
# orhan | 03 Mayıs 2007, 10:42
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
# ayşe | 03 Mayıs 2007, 23:39
Teşekkürler…
# ayşe | 05 Mayıs 2007, 12:28
Dizidekilerin toplamını buluyorduk. Ama hangisi ile yaptığımızı hatırlayamadım.
var dizi = [1,2,3,4,5]
alert(dizidekilerin toplamı) // 15
# eburhan | 05 Mayıs 2007, 12:36
$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.