อัปเดต (24 พฤศจิกายน 2558):
คำตอบนี้มีการโพสต์ครั้งแรกในปี 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;
};
}