2017-11-07 8 views
0

ramdaでフィルターを作成しようとしています。ユーザー入力による数値のフィルタリングを除いて、すべてが正常に機能します。これは文字列でのみ機能します。私はラムダにフィルタリングの際に数値を文字列に変換するよう指示できますか? Ramdaフィルター - 番号に数字が含まれています

const data = [ 
 
    { 
 
    col: 123, 
 
    foo: 'sfdfds' 
 
    }, 
 
    { 
 
    col: 624, 
 
    foo: 'dsfsdd' 
 
    }, 
 
    { 
 
    col: '98523', 
 
    foo: 'sdfsdf' 
 
    } 
 
]; 
 

 
const searchedValue = 23; 
 

 
const filteredData = R.filter(R.where({ col: R.contains(searchedValue) }))(data) 
 

 
console.log(filteredData)
<script src="//cdnjs.cloudflare.com/ajax/libs/ramda/0.25.0/ramda.min.js"></script>

ここ

全コード:https://jsfiddle.net/1qwnem2u/1/

答えて

1

RAMDAのcontainsは、このようなクロスタイプを動作するように意図されていません。しかし、あなたは簡単に自分を追加することができます。

const data = [ 
 
    {col: 123, foo: 'sfdfds'}, 
 
    {col: 624, foo: 'dsfsdd'}, 
 
    {col: '98523', foo: 'sdfsdf'} 
 
]; 
 

 
const searchedValue = 23; 
 

 
const stringContains = R.curry(
 
    (needle, haystack) => R.contains(String(needle), String(haystack)) 
 
) 
 

 
const filteredData = R.filter(R.where(
 
    { col: stringContains(searchedValue) } 
 
))(data) 
 

 
console.log(filteredData)
<script src="//cdnjs.cloudflare.com/ajax/libs/ramda/0.25.0/ramda.min.js"></script>

+0

おかげで多くのことを。私はこの他の問題も解決することができるので、これは私が探していたものです – Boris

関連する問題