Javascript ramda js使用查找组合,使用修剪值拾取

Javascript ramda js使用查找组合,使用修剪值拾取,javascript,functional-programming,find,ramda.js,Javascript,Functional Programming,Find,Ramda.js,我有类似的功能 id可能是1,2,3,4…或..'All' 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: 'ci

我有类似的功能

id可能是1,2,3,4…或..'All'

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  '}
]
我已经尝试了ramda js来转换上面的代码

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
预计o/p为

getData(id, obj) {
  return (id !== 'All') ? compose(R.find(R.propEq('id', id)))(obj) : 'All'
}

如何使用ramda拾取(名称、城市)和修剪值。有什么帮助吗?

你几乎把它答对了。不要使用
compose

constgetdata=(id,xs)=>
id的类型!==“数字”?身份证件:
R.find(R.propEq(“id”,id))(xs);

你不能用一个列表来组成一个函数。

你几乎把它写对了。不要使用
compose

constgetdata=(id,xs)=>
id的类型!==“数字”?身份证件:
R.find(R.propEq(“id”,id))(xs);

您不能用列表组合函数。

我将执行以下操作

getData(1, obj) => 'name1 city1'
getData('All', obj) => 'All'
getData('', obj) => ''

希望这对您有所帮助:)

我会做如下事情

getData(1, obj) => 'name1 city1'
getData('All', obj) => 'All'
getData('', obj) => ''

希望这对您有所帮助:)

我想先问一下您是否不能提前清理数据,也就是说,使用
R.map(R.evolve({name:trim,city:trim}))(obj)的结果进行进一步的工作。我想先问一下您是否不能提前清理数据,也就是说,使用
R.map(R.evolve)的结果({name:trim,city:trim}(obj)
以了解进一步的工作。