2017-11-07 1 views
0

나는 ramda로 필터를 만들려고합니다. 모든 것은 사용자 입력에 의한 숫자 필터링을 제외하고는 잘 작동합니다. 그것은 문자열에서만 작동합니다. 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

관련 문제