ОБНОВЛЕНИЕ (24 ноября 2015 г.):
Этот ответ первоначально был опубликован в 2010 году (шесть лет назад), поэтому, пожалуйста, примите к сведению эти проницательные комментарии:
ОРИГИНАЛЬНЫЙ ОТВЕТ:
Я знаю, что это годичный вопрос ... но мне это тоже нужно, и мне нужно, чтобы он работал кросс-браузерно, так что ... объединяя ответы и комментарии каждого и немного упрощая его:
String.prototype.endsWith = function(suffix) {
return this.indexOf(suffix, this.length - suffix.length) !== -1;
};
- Не создает подстроку
- Использует встроенную
indexOf
функцию для самых быстрых результатов
- Пропустить ненужные сравнения, используя второй параметр,
indexOf
чтобы пропустить вперед
- Работает в Internet Explorer
- НЕТ регулярных выражений
Также, если вам не нравится вставлять вещи в прототипы нативной структуры данных, вот отдельная версия:
function endsWith(str, suffix) {
return str.indexOf(suffix, str.length - suffix.length) !== -1;
}
РЕДАКТИРОВАТЬ: Как отметил @hamish в комментариях, если вы хотите ошибиться на всякий случай и проверить, была ли уже реализована реализация, вы можете просто добавить typeof
проверку следующим образом:
if (typeof String.prototype.endsWith !== 'function') {
String.prototype.endsWith = function(suffix) {
return this.indexOf(suffix, this.length - suffix.length) !== -1;
};
}