2016-04-07 19 views
2

ramda.js birlikte iki özelliklerini Birleştirme: Bunu yapmak için daha iyi bir yolu olup olmadığını merak ediyorum

var books = [ 
    { 
     title: 'Some Book', 
     author: { 
     firstName: 'John', 
     lastName: 'Doe' 
     } 
    }, 
    { 
     title: 'Another Book', 
     author: { 
     firstName: 'Jane', 
     lastName: 'Smith' 
     } 
    } 
]; 

var getNames = R.pipe(
    R.prop('author'), 
    R.props(['firstName', 'lastName']), 
    R.join(' ') 
); 

console.log(R.map(getNames, books)); 

Yani temelde

, birlikte iki özelliklerini birleştirerek tam adları almaya çalışıyorum. Bu çalışıyor, ama ben Ramda içinde bunu yapmak için daha iyi (daha kısa) bir yol olup olmadığını merak ediyordum? Dokümantasyondan geçtim, ama henüz kullanımını anlamadığım bazı fonksiyonlar var. Burada soruyorum Yani bu yüzden .. :)

keman: https://jsbin.com/jidiwejatu/edit?js,console

------------------- DÜZENLEME ------- ----------

Bu basit bir örnektir, ancak farklı yollardan özellikleri birleştirmek zorunda kaldım, bu daha karmaşık hale gelir, çünkü R.path'u kullanmak zorunda kalırdım her özellik Ben haklı mıyım

cevap

3

Yapabilirsiniz kullanmak juxt Eğer nesneden istediğiniz şey dizisini almak için (v0.19.0 eklendi):

var getNames = R.pipe(
    R.juxt([ 
     R.path(['author', 'firstName']), 
     R.path(['author', 'lastName']) 
    ]), 
    R.join(' ') 
); 
İlgili konular