UPDATE (24 Nov 2015):
Jawaban ini awalnya diposting pada tahun 2010 (ENAM tahun yang lalu.) Jadi harap perhatikan komentar yang berwawasan luas ini:
JAWABAN ASLI:
Saya tahu ini adalah pertanyaan berumur satu tahun ... tapi saya perlu ini juga dan saya membutuhkannya untuk bekerja lintas-browser jadi ... menggabungkan jawaban dan komentar semua orang dan sedikit menyederhanakannya:
String.prototype.endsWith = function(suffix) {
return this.indexOf(suffix, this.length - suffix.length) !== -1;
};
- Tidak membuat substring
- Menggunakan
indexOf
fungsi asli untuk hasil tercepat
- Lewati perbandingan yang tidak perlu menggunakan parameter kedua
indexOf
untuk melompat ke depan
- Bekerja di Internet Explorer
- TIDAK ADA komplikasi Regex
Juga, jika Anda tidak suka memasukkan hal-hal dalam prototipe struktur data asli, berikut ini adalah versi mandiri:
function endsWith(str, suffix) {
return str.indexOf(suffix, str.length - suffix.length) !== -1;
}
EDIT: Seperti dicatat oleh @hamish di komentar, jika Anda ingin berbuat salah di sisi aman dan memeriksa apakah suatu implementasi telah disediakan, Anda bisa menambahkan typeof
cek seperti:
if (typeof String.prototype.endsWith !== 'function') {
String.prototype.endsWith = function(suffix) {
return this.indexOf(suffix, this.length - suffix.length) !== -1;
};
}