ACTUALIZACIÓN (24 de noviembre de 2015):
Esta respuesta se publicó originalmente en el año 2010 (SEIS años atrás), así que tome nota de estos comentarios perspicaces:
RESPUESTA ORIGINAL:
Sé que esta es una pregunta de hace un año ... pero también la necesito y la necesito para funcionar en varios navegadores, así que ... combinando las respuestas y comentarios de todos y simplificándola un poco:
String.prototype.endsWith = function(suffix) {
return this.indexOf(suffix, this.length - suffix.length) !== -1;
};
- No crea una subcadena
- Utiliza la
indexOf
función nativa para obtener resultados más rápidos.
- Omita las comparaciones innecesarias utilizando el segundo parámetro de
indexOf
para saltar adelante
- Funciona en Internet Explorer
- NO complicaciones Regex
Además, si no le gusta rellenar cosas en los prototipos de la estructura de datos nativa, aquí hay una versión independiente:
function endsWith(str, suffix) {
return str.indexOf(suffix, str.length - suffix.length) !== -1;
}
EDITAR: como señaló @hamish en los comentarios, si desea errar en el lado seguro y verificar si ya se ha proporcionado una implementación, simplemente puede agregar una typeof
verificación de esta manera:
if (typeof String.prototype.endsWith !== 'function') {
String.prototype.endsWith = function(suffix) {
return this.indexOf(suffix, this.length - suffix.length) !== -1;
};
}