Ramda, проверьте (фильтр), содержит ли массив строк подстроку - PullRequest
0 голосов
/ 29 августа 2018

Например, у меня есть массив:

let data = [ 'abc', 'dfgx', 'dfgxabc', 'xyzz' ]

И тестовая подстрока:

const searchStr = 'abc'

Мне нужен другой массив, который содержит любые совпадающие значения из массива data.

let result = ['abc', 'dfgxabc']

В моей задаче я получаю строку с клавиатуры, она может содержать не менее 3 символов и более. Так что это что-то вроде живого поиска.

Я пытаюсь использовать Рамду:

const data = [ 'abc', 'dfg', 'xyz' ]

const searchStr = 'abc'

const filtered = R.filter(R.match(new RegExp(searchStr, 'i')), data)

1 Ответ

0 голосов
/ 29 августа 2018

Вы можете сделать это с нативными js с помощью Array.prototype.filter и RegExp.prototype.test

const data = [ 'abc', 'dfgx', 'dfgxabc', 'xyzz' ];

const searchStr = 'abc';

const filtered = data.filter(s => new RegExp(searchStr, 'ig').test(s));

console.log(filtered);
...