在ramda.js中合并两个属性

Suc*_*ode 2 javascript ramda.js

我想知道是否有更好的方法可以做到这一点:

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));
Run Code Online (Sandbox Code Playgroud)

因此,基本上,我试图通过将两个属性组合在一起来获得全名。这行得通,但是我想知道是否有更好(更短)的方法来执行此操作Ramda?我仔细阅读了文档,但是有些功能我还不太了解。所以这就是为什么我在这里问.. :)

提琴:https ://jsbin.com/jidiwejatu/edit ? js,控制台

-------------------编辑-----------------

这是一个简单的示例,但是如果我必须合并来自不同路径的属性,那会变得更加复杂,因为我将不得不使用它R.path来获取每个属性。我对吗?

iof*_*sli 5

您可以使用juxt(在v0.19.0中添加)从对象获取所需数组:

var getNames = R.pipe(
    R.juxt([
        R.path(['author', 'firstName']),
        R.path(['author', 'lastName'])
    ]),
    R.join(' ')
);
Run Code Online (Sandbox Code Playgroud)