我想知道是否有更好的方法来做到这一点:
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
来获取每个属性。我是对的吗?
答案 0 :(得分:4)
您可以使用juxt
(在v0.19.0中添加)从对象获取您想要的任何数组:
var getNames = R.pipe(
R.juxt([
R.path(['author', 'firstName']),
R.path(['author', 'lastName'])
]),
R.join(' ')
);