String.contains() Javascript polyfill

Firefox soporta desde su versión 19 el método contains() de la clase String, que devuelve true o false según si una cadena contiene o no otra cadena. Por ejemplo:

"foo".contains("oo") // true
"foo".contains("bar") // false

Ningún otro navegador lo soporta de momento, pero es sencillo hacerlos compatibles. Con estas lineas se comprueba si existe el método contains y en caso contrario se creará.

if(!('contains' in String.prototype)){
   String.prototype.contains = function(str, startIndex) {
      return -1 !== String.prototype.indexOf.call(this, str, startIndex);
   };
}

También se podría usar algo como if( "foo".indexOf("bar") != -1 ){ // Encontrado }, pero no me parece en absoluto intuitivo, así que buscando encontré el código anterior, que permitirá escribir un código bastante más «para humanos».

Hay cierto debate sobre si se debe o no modificar las clases de las que no se es propietario. Entiendo que en determinadas situaciones puede suponer un problema, pero me cuesta imaginar el caso en el que esto lo sea. En cualquier caso siempre podéis hacer una función nueva pasándole las cadenas correspondientes como dos parámetros por ejemplo, sin sobreescribir la clase String original, pero a mí me parece más limpio así.

strContainsStr( str1, str2){
   return ( str1.indexOf(str2) != -1 ? true : false);
}

strContainsStr("foo","oo") // true
strContainsStr("foo","bar") // false

Por ejemplo.

Comentarios (1)

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.