javascript - varias - sentencia if
Condiciones mĂșltiples para el mĂ©todo.includes() de JavaScript. (3)
solo me pregunto si hay una manera de agregar múltiples condiciones a un método .includes, por ejemplo:
var value = str.includes("hello", "hi", "howdy");
imagine que la coma indica "o" (ahora se pregunta si la cadena contiene hola o hola), así que solo si una y solo una de las condiciones son verdaderas.
¿Hay un método para hacer eso?
Con includes()
, no, pero puede lograr lo mismo con REGEX a través de test()
:
var value = /hello|hi|howdy/.test(str);
O, si las palabras vienen de una fuente dinámica:
var words = array(''hello'', ''hi'', ''howdy'');
var value = new RegExp(words.join(''|'')).test(str);
El enfoque REGEX es una mejor idea porque le permite hacer coincidir las palabras como palabras reales, no como subcadenas de otras palabras. Solo necesitas la palabra marcador de límite /b
, así que:
var str = ''hilly'';
var value = str.includes(''hi''); //true, even though the word ''hi'' isn''t found
var value = //bhi/b/.test(str); //false - ''hi'' appears but not as its own word
Eso debería funcionar incluso si una, y solo una de las condiciones es verdadera:
var str = "bonjour le monde vive le javascript";
var arr = [''bonjour'',''europe'', ''c++''];
function contains(target, pattern){
var value = 0;
pattern.forEach(function(word){
value = value + target.includes(word);
});
return (value === 1)
}
console.log(contains(str, arr));
Puede utilizar el método .some
que se hace referencia here .
El método
some()
comprueba si al menos un elemento de la matriz pasa la prueba implementada por la función proporcionada.
// test cases
var str1 = ''hi, how do you do?'';
var str2 = ''regular string'';
// does the test strings contains this terms?
var conditions = ["hello", "hi", "howdy"];
// run the tests agains every element in the array
var test1 = conditions.some(el => str1.includes(el));
var test2 = conditions.some(el => str2.includes(el));
// display results
console.log(str1, '' ===> '', test1);
console.log(str2, '' ===> '', test2);