3

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

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,console

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

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

4

1 回答 1

7

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

var getNames = R.pipe(
    R.juxt([
        R.path(['author', 'firstName']),
        R.path(['author', 'lastName'])
    ]),
    R.join(' ')
);
于 2016-04-07T08:58:50.507 回答