Это можно сделать, используя некоторые / все методы Array и RegEx.
Чтобы проверить, присутствуют ли ВСЕ слова из списка (массива) в строке:
const multiSearchAnd = (text, searchWords) => (
searchWords.every((el) => {
return text.match(new RegExp(el,"i"))
})
)
multiSearchAnd("Chelsey Dietrich Engineer 2018-12-11 Hire", ["cle", "hire"])
multiSearchAnd("Chelsey Dietrich Engineer 2018-12-11 Hire", ["che", "hire"])
Чтобы проверить, присутствует ли ЛЮБОЕ слово из списка (массива) в строке:
const multiSearchOr = (text, searchWords) => (
searchWords.some((el) => {
return text.match(new RegExp(el,"i"))
})
)
multiSearchOr("Chelsey Dietrich Engineer 2018-12-11 Hire", ["che", "hire"])
multiSearchOr("Chelsey Dietrich Engineer 2018-12-11 Hire", ["aaa", "hire"])
multiSearchOr("Chelsey Dietrich Engineer 2018-12-11 Hire", ["che", "zzzz"])
multiSearchOr("Chelsey Dietrich Engineer 2018-12-11 Hire", ["aaa", "1111"])
or
означало бы, что по крайней мере одного совпадения будет достаточно.