CẬP NHẬT (ngày 24 tháng 11 năm 2015):
Câu trả lời này ban đầu được đăng vào năm 2010 (SIX năm trở lại.) Vì vậy xin vui lòng lưu ý những nhận xét sâu sắc này:
TRẢ LỜI GỐC:
Tôi biết đây là một câu hỏi cũ ... nhưng tôi cũng cần câu hỏi này và tôi cần nó để hoạt động trên nhiều trình duyệt vì vậy ... kết hợp câu trả lời và nhận xét của mọi người và đơn giản hóa nó một chút:
String.prototype.endsWith = function(suffix) {
return this.indexOf(suffix, this.length - suffix.length) !== -1;
};
- Không tạo chuỗi con
- Sử dụng
indexOf
chức năng gốc để có kết quả nhanh nhất
- Bỏ qua các so sánh không cần thiết bằng cách sử dụng tham số thứ hai của
indexOf
bỏ qua phía trước
- Hoạt động trong Internet Explorer
- KHÔNG có biến chứng Regex
Ngoài ra, nếu bạn không thích nhét mọi thứ vào các nguyên mẫu của cấu trúc dữ liệu gốc, thì đây là phiên bản độc lập:
function endsWith(str, suffix) {
return str.indexOf(suffix, str.length - suffix.length) !== -1;
}
EDIT: Như đã lưu ý bởi @hamish trong các bình luận, nếu bạn muốn sai sót về mặt an toàn và kiểm tra xem việc triển khai đã được cung cấp chưa, bạn chỉ cần thêm một typeof
kiểm tra như vậy:
if (typeof String.prototype.endsWith !== 'function') {
String.prototype.endsWith = function(suffix) {
return this.indexOf(suffix, this.length - suffix.length) !== -1;
};
}