2012-07-25 12 views

cevap

14

görünüyor geçerli bir yaklaşım daha sonra ihtiyaçlarınızın daha iyi uyacak ko.utils.arrayFirst veya ko.utils.arrayFilter gibi görünüyor. İşte (KO GitHub sayfasında utils.js itibaren) arrayForEach kaynağı

arrayForEach: function (array, action) { 
    for (var i = 0, j = array.length; i < j; i++) 
     action(array[i]); 
}, 

sen kırmak ya, sadece yukarıdaki kaynak kodunda olduğu gibi döngü için kendi dönebilirsiniz devam etmek gerekirse bu.

+0

'j' başlatılmasının anlamı nedir? Sen sadece

+2

@TheMuffinMan j noktasi, her döngü yinelemesi sirasinda dizinin aydinlatilmasini önleyerek, bazi milisaniyelerin kaydedilmesidir. [Bu StackOverflow sorusu] 'na bakın (http://stackoverflow.com/questions/17989270/javascript-for-loop-performance-storing-array-length-in-a-variable). Bu soruya verilen cevapta atıf yapılan jsperf'ten, modern tarayıcılarda pek fark yaratmadığı anlaşılıyor. – bmode

9

yapamazsın gibi

+0

Gereksinim, performansla ilgilidir. Bir döngüde birden çok şey yapmak istiyorum. – ozz

+0

Basit bir döngü kullanın, birkaç milisaniye tasarrufu sağlar, çünkü bu durumda sadece kodunuzu çalıştırırsınız ve arrayForEach'a ilettiğiniz alt işlevi çağırmazsınız. – Madman

İlgili konular