comparación de cadenas en javascript que devuelve un valor booleano

¿Hay una función en javascript que compare una cadena y devuelva un valor booleano? Encontré .match pero devuelve las cadenas que coincidieron. Esperaba que hubiera algo más para tener un código menor al comparar una cadena. Ya que quería verificar si una cadena tiene esta palabra y continuar de lo contrario.

gracias

preguntado el 22 de mayo de 12 a las 16:05

¿Está buscando una coincidencia exacta de cadena 1 con cadena 2, o es cadena 1 algo que puede ocurrir en algún lugar dentro de una cadena 2 más grande? -

esa fue mi primera solución pero encontré una falla. Correo electrónico == El correo electrónico del amigo devolverá falso. así que estaba buscando una función similar a strcmp para javascript. :) -

8 Respuestas

Puedes usar RegEx test() método que devuelve un valor booleano:

/a/.test('abcd'); // returns true.

contestado el 22 de mayo de 12 a las 16:05

Esta es la respuesta correcta. "El test() El método ejecuta una búsqueda de una coincidencia entre una expresión regular y una cadena especificada. Devoluciones true or false"- desarrollador.mozilla.org/en-US/docs/Web/JavaScript/Reference/… - dem pilafian

Puede usar el tipo aumento, especialmente si necesita usar esta función con frecuencia:

String.prototype.isMatch = function(s){
   return this.match(s)!==null 
}

Entonces puedes usar:

var myBool = "ali".isMatch("Ali");

La opinión general es que el uso del aumento de tipo es desanimado solo por el hecho de que puede colisionar con otros aumentos.

Según Patrones de JavaScript libro, su uso debe ser limitado.

Personalmente, creo que está bien, siempre que use una buena denominación como:

String.prototype.mycompany_isMatch = function(s){
   return this.match(s)!==null 
}

Esto lo hará feo pero seguro.

contestado el 22 de mayo de 12 a las 23:05

¡Estupendo! (¿un poco exagerado tal vez? :D) - ArtoAle

No he visto esas cosas antes. ¿Qué es Ismatch? déjame probar esto. Gracias - mago

@magicianIam funcionará si lo agrega al prototipo de cadena, como lo he descrito. isMatch es nuestra adición al marco de JavaScript, no una función intrínseca - Alióstad

No hay un método "isMatch" en String. lo que Aliostad quiere explicar es que puede aumentar la funcionalidad del objeto javascript definiendo una nueva función y agregándola a su prototipo. Mira esto crockford.com/javascript/herencia.html antes algo mas - ArtoAle

En mi opinión, esto es excesivo si todo lo que necesita es una sola condición. Este método sería mejor si necesita utilizarlo en muchos lugares: Crayon violento

hay .indexOf() que devolverá la posición de la cadena encontrada, o -1 si no se encuentra

contestado el 22 de mayo de 12 a las 16:05

Siempre pensé que eso era solo para la matriz. - mago

no, ¡también funciona en cuerdas! Pero no tengo claro si está buscando una subcadena dentro de una cadena, o una comparación de cadena exacta (¿insensible a mayúsculas y minúsculas?) ... - Crayon violento

distingue entre mayúsculas y minúsculas, pero planeo usar minúsculas para aliviar mis problemas. déjame probar este. Gracias. Me pregunto por qué Google no me mostró este. - mago

myString.indexOf(myWord) > -1

o, si quieres una función:

function hasWord(myString, myWord) {
  return myString.indexOf(myWord) > -1;
}

contestado el 22 de mayo de 12 a las 16:05

Sé que esta no es la respuesta exacta que está buscando, pero siempre es una forma efectiva de hacerlo.

if(var1 == var2){
  //do this
}else{
  //do that
};

contestado el 22 de mayo de 12 a las 16:05

según gran número de artículos (y mi opinión personal también) el ===La prueba es mucho más confiable (y tiene propiedad de transitividad) que ==(que no es transitiva). Además, si necesita un booleano, simplemente puede usar (var1 === var2 ? true: false) - ArtoAle

Sí, entiendo que quiere devolver un booleano, pero ¿qué va a hacer con él después? Mi suposición sería hacer algo si es verdadero y otra cosa si es falso. Pero sí, tienes razón con el ===. - Cecil Teodoro

En realidad, .match()puede hacer el truco por usted porque devuelve una matriz de cadenas de coincidencia de patrones, si las hay, nula de lo contrario.

De todos modos, si solo desea verificar si una cadena contiene otra cadena, es más probable que use indexOf() (devolverá -1 si no se encuentra ninguna subcadena).

La primera solución es un poco exagerada para su propósito.

Si en el otro extremo desea verificar la igualdad, puede usar `string1 === string2``

contestado el 22 de mayo de 12 a las 16:05

Puedes usar una comparación.

if ("dog" == "cat") {
  DoSomethingIfItIsTrue();
} else {
    DoSomethingIfItIsFalse();
}

contestado el 24 de mayo de 12 a las 10:05

Estrictamente hablando, si adopta este enfoque, querrá usar '===', no '=='. Sospecho que la mayoría de los codificadores de Javascript usarían esto en lugar de aumentar el prototipo de String, por lo que al menos vale la pena hacer que las personas se acostumbren a usar '===' para verificar la igualdad. - mick sear

Si alguien todavía tiene dudas...

Fue citado por otro colega usando el indexOf() método. El retorno de este método es "-1", si no encuentra el String en el Array, o la posición del caso que encuentra.

Para utilizarlo con la devolución deseada, tendrías que realizar una comprobación antes, como por ejemplo:

exampleMethod () {
const expression = ['string1', string2] .indexOf (this.exampleObject);
if (expression! = -1) {
 return true;
  } else return false;
}

Básicamente, aprovecharías esta devolución.

Sin embargo, a pesar de la includes() El método simplemente se puede usar:

exampleMethode(): boolean {
  return ['string1', 'string2'].includes(this.exampleObject);
}

El retorno de este método hará lo que quieras de una forma sencilla. Compara la cadena del objeto con la matriz de cadenas que desea verificar y devuelve un valor booleano.

Respondido el 04 de enero de 19 a las 19:01

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.