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.




Josep Viciana

Programador de 28 años con una década de experiencia como programador. interesado en el diseño, ilustración y nuevas tecnologías. Dedicado desde siempre a la programación Web y desde hace algunos años también a la móvil.

1 comentario

Deja un comentario

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