javascript - ramda js 用 find 组合,用修剪值选择
问题描述
const obj = [
{id: 1, name:'name1 ', age: 26, city: 'city1 '},
{id: 2, name:'name2', age: 24, city: 'city2 '},
{id: 3, name:' name3', age: 28, city: ' city3 '},
{id: 4, name:'name4 ', age: 25, city: 'city4 '}
]
我有类似的功能
id 可能是 1,2,3,4...或..'All'
getData(id, obj) {
if(id && id !=='All'){
const res = obj.find((o) => o.id === id)
return `${res.name.trim()} ${res.city.trim()}`
} else if(id === 'All') {
return 'All'
}
return ''
}
getData(1, obj) // name1 city1
getData('All', obj) // All
我试过 ramda js 来转换上面的代码,
getData(id, obj) {
return (id !== 'All') ? compose(R.find(R.propEq('id', id)))(obj) : 'All'
}
预期的 o/p 是
getData(1, obj) => 'name1 city1'
getData('All', obj) => 'All'
getData('', obj) => ''
如何使用 ramda选择(名称,城市)和修剪值。任何帮助
解决方案
你几乎猜对了。不要使用compose
:
const getData = (id, xs) =>
typeof id !== "number" ? id :
R.find(R.propEq("id", id))(xs);
你不能用一个列表来组合一个函数。
推荐阅读
- chart.js - 如何使用 Chart.js 构建动态图表
- python - 如何使用 .get 函数正确获取 csv 文件字典以返回某些值
- c++ - 运算符和返回类型是什么意思?
- seaborn - 用 seaborn 绘制计数值的结果
- java - 即使使用 ErrorHandler,为什么架构验证会在第一个错误之后结束?
- mysql - 同一事务中的两个插入,其中第二个插入取决于第一个
- php - 如何在 PHP 中验证电话号码、姓名、电子邮件?
- python - python fptlib mlsd生成器迭代错误
- javascript - 发出多个并行 REST 调用并等待 node.js 中的所有结果的推荐方法
- php - 使用 PHP 从 Stripe Webhook JSON 获取数据