Estoy tratando de permitir que mi usuario ingrese un término de búsqueda y luego devuelva las cadenas en la matriz que coinciden con todos los nombres que ingresaron. Entonces, si escribieron clinton aquí, encontraría a todos los clinton, pero si buscaron hillary clinton, omitiendo el segundo nombre de rodham, devolvería hillary pero no bill o chelsea.
const array = ['hillary rodham clinton', 'bill clinton', 'chealsea clinton', 'louise penny', 'amanda litman'] const searchTerm1 = 'hillary clinton' // should return hillary rodham clinton const searchTerm2 = 'clinton' // should return hillary rodham clinton, bill clinton, chelsea clinton const searchTerm3 = 'hillary' // should return hillary rodham clintonSuponiendo que sus términos de búsqueda siempre estarán separados por un solo espacio, puede hacer algo como esto:
const array = ['hillary rodham clinton', 'bill clinton', 'chealsea clinton', 'louise penny', 'amanda litman'] const searchTerm1 = 'hillary clinton' // should return hillary rodham clinton const searchTerm2 = 'clinton' // should return hillary rodham clinton, bill clinton, chelsea clinton const searchTerm3 = 'hillary' // should return hillary rodham clinton let find = (term) => array.filter(item => term.split(' ').every(r => item.split(' ').includes(r))) console.log(find(searchTerm1)) console.log(find(searchTerm2)) console.log(find(searchTerm3))Puede utilizar esta función para buscar.
function search(searchTerm, array) { const words = searchTerm.split(" "); let tmpArray = array; for (let i = 0; i < words.length; i++) { tmpArray = tmpArray.filter(obj => obj.indexOf(words[i]) >= 0); } return tmpArray; } const newArray1 = search(searchTerm1, array); const newArray2 = search(searchTerm2, array); const newArray3 = search(searchTerm3, array);