Quiero un método que encuentre una palabra en una cadena, tiene que ser una matriz completa, no un subarreglo en una cadena (como lo hace array.includes())
const key = ['one','two','three'] let message = 'onepiece' key.forEach((j) => { //string.prototype.includes() if(message.includes(j)) console.log('Method1',true); //In this way is true always there is a 'one', no matter if the string is just 'one' or 'onepiece' or 'one piece' else console.log('Method1',false) //array.prototype.includes() if(j.includes(message)) console.log('Method2',true); //In this way is true when message = 'one' else console.log('Method2',false) });El siguiente código hace lo que quiero.
const key = ['one','two','three'] let message = 'one' for (var i=0 ; message[i]!=undefined ; i++){ mes = message.split(" ")[i] if(key.includes(mes)) console.log(true) //In this way is true when the message contains 'one', no matter if it's alone or in a string, but false if it's 'onepiece' }Siento que este código es muy ineficiente, mi pregunta es ¿hay una forma más sencilla de hacer esta función?
¡Gracias!
Parece que está buscando una intersección entre dos matrices, ya que está tratando el messsage como una matriz al dividirlo. En ese caso, podría usar array.some() para verificar si existen palabras key en message :
const key = ['one', 'two', 'three'] let message = 'one' let mes = message.split(' ') let result = key.some(val => mes.includes(val)) console.log(result) //Result is true for 'one' //Result is true for 'one piece' //Result is false for 'onepiece'