Eso se puede hacer usando algunos / todos los métodos de Array y RegEx.
Para verificar si TODAS las palabras de la lista (matriz) están presentes en la cadena:
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"])
Para verificar si ALGUNA de las palabras de la lista (matriz) están presentes en la cadena:
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
implicaría que al menos una coincidencia sería suficiente.