Hola gente, he pasado demasiado tiempo tratando de encontrar una solución para esto y me gustaría saber si alguien puede ayudarme.
Entonces, el problema es que tengo 2 matrices, la primera con varias palabras de una dirección y otra que construí con la palabra que ingresé en una entrada, se vuelve verdadero si pongo exactamente la misma palabra en la entrada que en el matriz de cadenas, pero me gustaría que se volviera verdadero si también coincide parcialmente, por ejemplo, tengo "CENTER" y "RACHEL" en la matriz de cadenas si escribo "CEN EL en la entrada porque coincidiría parcialmente con 2 de la matriz elementos
aquí está el código que he estado tratando de armar
function checker(arr, words) { return words.every(v => arr.includes(v)); } this.shippingAddress.forEach(address => { const stringBuild = `${address.name} ${address.display_address} ${address.phone}`; const arrayString = stringBuild.split(' '); if (checker(arrayString, words)) { _results.push(address); } });Un ejemplo de entrada sería para la matriz arrayString:
[ 0: "CENTER" 1: "MANIKI" 2: "BRUCHESI" 3: "2225," 4: "" 5: "STREET" 6: "RACHEL" 7: "EAST," 8: "CITY" 9: "STUFF," 10: "STUFF" 11: "STUFF" 12: "STUFF" 13: "STUFF" ]para las palabras de la matriz:
[ 0: "CEN" 1: "EL" ]y la salida sería verdadera porque CEN y EL que pasan en el verificador se incluirían en la primera matriz, pero solo funciona si pongo las palabras completas en
Si entiendo correctamente, ¿desea devolver true si cada palabra en la matriz coincide parcialmente (o totalmente)?
Para cada palabra que debe coincidir, probaría la matriz de palabras escritas y vería si al menos una de las palabras escritas coincide parcialmente con el objetivo. Usaría una expresión regular, y también haría que no distinga entre mayúsculas y minúsculas con "i":
const checkArray = ["center","rachel"]; const isOK = (typedWords) => checkArray.every( word1 => typedWords.some( word2 => new RegExp(word2, "i").test(word1))) console.log(isOK([ "ent" , "rac" ])) console.log(isOK([ "AaAa" , "BbBb" ]))