Aralarındaki farkın ne olduğunu hep merak etmişimdir. Hepsi aynı şeyi yapıyor gibi görünüyor ...
Aralarındaki farkın ne olduğunu hep merak etmişimdir. Hepsi aynı şeyi yapıyor gibi görünüyor ...
Yanıtlar:
Fark, dönüş değerlerindedir.
.map()
orijinal öğe üzerinde bazı eylemler gerçekleştirilerek oluşturulan yeni bir nesne dizisi döndürür .
.every()
mantıksal değer döndürür - bu dizideki her öğe sağlanan test işlevini karşılıyorsa true. Aradaki önemli bir fark .every()
, dizideki her öğe için test işlevinin her zaman çağrılamayabilmesidir. Test işlevi herhangi bir öğe için yanlış döndürdüğünde, başka dizi öğesi yinelenmez. Bu nedenle, test işlevinin genellikle hiçbir yan etkisi olmamalıdır .
.forEach()
hiçbir şey döndürmez - Dizideki her öğe için belirli bir eylemi gerçekleştiren Diziyi yineler.
MDN'de bunlar ve diğer birçok Dizi yineleme yöntemi hakkında bilgi edinin .
gilly3'ün cevabı harika. Diğer "döngü öğeleri" işlevleri hakkında biraz bilgi eklemek istedim.
.every()
(yineleyici ilk kez yanlış veya yanlış bir şey döndürdüğünde döngüyü durdurur).some()
(yineleyici doğru veya doğru bir şey döndürdüğünde ilk kez döngüyü durdurur).filter()
(filtre işlevinin true döndürdüğü öğeleri içeren ve false döndürdüğü yerleri atlayan yeni bir dizi oluşturur).map()
(yineleyici işlevi tarafından döndürülen değerlerden yeni bir dizi oluşturur).reduce()
(yineleyiciyi tekrar tekrar çağırarak, önceki değerleri ileterek bir değer oluşturur; ayrıntılar için spesifikasyona bakın; bir dizinin içeriğini ve diğer birçok şeyi toplamak için kullanışlıdır).reduceRight()
(azaltma gibi, ancak artan sırada değil, azalan şekilde çalışır)kredi: TJCrowder JavaScript'teki bir dizi üzerinden her biri için?
Yukarıdaki harika cevapların bir başka düşüncesi de zincirlemedir. ForEach () ile zincirleme yapamazsınız, ancak map () ile yapabilirsiniz.
Örneğin:
var arrayNumbers = [3,1,2,4,5];
arrayNumbers.map(function(i) {
return i * 2
}).sort();
.forEach () ile .sort () yapamazsınız, bir hata alırsınız.
İçin Ramda arasındaki fark R.map()
ve R.forEach()
geçerli:
R.forEach()
orijinal diziyi R.map()
döndürürken bir işlev döndürürR.forEach()
yalnızca dizi üzerinde çalışabilir, ancak R.map()
bir nesne üzerinde de çalışabilir (yani, nesnenin anahtar / değer çiftleri bir dizi gibi ele alınır)
every
veforEach
değil, sanırım sorunun jQuery ile herhangi bir şekilde ilgili olması olası değil. developer.mozilla.org/en/JavaScript/New_in_JavaScript/1.6