在ramda.js中将两个属性合并在一起

Merge two properties together in ramda.js

本文关键字:两个 属性 合并 在一起 js ramda      更新时间:2024-02-23

我想知道是否有更好的方法:

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));

所以基本上,我试图通过将两个属性组合在一起来获得全名。这是有效的,但我想知道在Ramda中是否有更好(更短)的方法可以做到这一点?我浏览了文档,但有些函数的用法我还不太了解。所以这就是我在这里问的原因……:)

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

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

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

您可以使用juxt(在v0.19.0中添加)从对象中获得任何您想要的数组:

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