2016-04-12 35 views
16

içinde yineleme indeksi erişebilirler. Genellikle index'a ihtiyacım yok ama bazen yararlıdır.nasıl lodash ile</p> <pre><code>_.map(items, (item, index) => {}); </code></pre> <p>gibi bir şey yazmak için kullanılan Ramda.map

Şimdi Ramda göç ediyorum:

R.map((item, index) => {}, items); 

indexundefined olduğunu. Tabii ki, index değişkenini üstte oluşturabilirim ve her seferinde map gövdesinde artırabilirim, ancak FP'nin Ramda'nın temsil ettiği bakış açısından yanlıştır. Yani yineleme endeksi elde etmek için herhangi bir yapı var mı?

+1

"Ayrıca bkz" belgelerinde böyle sorularla size yardımcı olabilir – iofjuupasli

cevap

24

Kontrol dışarı addIndex: Mevcut indeksi ve tüm listeyi:

iki onun geri arama işlevine yeni parametreler ekleyerek mevcut birinden yeni liste yineleme işlevi oluşturur. Bu, örneğin, Ramda'nın basit harita işlevi Array.prototype.map'a daha çok benzeyen bir işlev haline dönüşür. Bunun yalnızca yineleme geri çağırma işlevinin ilk parametre olduğu ve listenin son parametre olduğu işlevler için çalışacağını unutmayın. (Liste parametresi kullanılmazsa Bu sonuncu önemli olmayabilir.) Dokümanlardan

Örnek: Orada

var mapIndexed = R.addIndex(R.map); 
mapIndexed((val, idx) => idx + '-' + val, ['f', 'o', 'o', 'b', 'a', 'r']); 
//=> ['0-f', '1-o', '2-o', '3-b', '4-a', '5-r']