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