ramda js 组合查找,选择 trim 值
ramda js compose with find, pick with trim values
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 选择(名称、城市)和 trim 值 。任何帮助
你几乎答对了。不要使用 compose
:
const getData = (id, xs) =>
typeof id !== "number" ? id :
R.find(R.propEq("id", id))(xs);
不能用列表组合函数。
我会做类似下面的事情
const getData = (id, obj) =>
id == 'All' : 'All'
? R.pipe(
R.find(R.propEq('id', id)), // {id: ..., name: ' foo', city: 'bar '} | null
R.ifElse(
R.isNil, // if null
() => '', // then ''
R.pipe( // else
R.props(['name', 'city']), // [' foo', 'bar ']
R.map(R.trim) // ['foo', 'bar']
R.join(' ') // 'foo bar'
)
)
)(obj)
希望对您有所帮助:)
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 选择(名称、城市)和 trim 值 。任何帮助
你几乎答对了。不要使用 compose
:
const getData = (id, xs) =>
typeof id !== "number" ? id :
R.find(R.propEq("id", id))(xs);
不能用列表组合函数。
我会做类似下面的事情
const getData = (id, obj) =>
id == 'All' : 'All'
? R.pipe(
R.find(R.propEq('id', id)), // {id: ..., name: ' foo', city: 'bar '} | null
R.ifElse(
R.isNil, // if null
() => '', // then ''
R.pipe( // else
R.props(['name', 'city']), // [' foo', 'bar ']
R.map(R.trim) // ['foo', 'bar']
R.join(' ') // 'foo bar'
)
)
)(obj)
希望对您有所帮助:)