Ramda 过滤器 - 数字包含数字

Ramda filter - number contains number

我正在尝试使用 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/

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>