ตัวอย่าง: กลับลำดับสตริง "qries"
ใช้ลูป while วนจากตัวสุดท้ายมาหาตัวแรก
<!DOCTYPE html>
<html>
<body>
<script>
var myStr;
function reverseStr(myStr) {
// ตรวจสอบค่าว่างและชนิดข้อมูล
if(!myStr.trim() || 'string' !== typeof myStr) {
return;
}
let l = myStr.length, s = '';
while(l > 0) {
l--;
s += myStr[l];
}
return s;
}
document.write("Reversed String: " + reverseStr("qries"));
</script>
</body>
</html>
ผลลัพธ์
Reversed String: seirq
วิธีอื่นๆที่ทันสมัยกว่า (ES6+)
1. ใช้ Spread Operator + reverse() + join()
function reverseStr(str) {
return [...str].reverse().join('');
}
console.log(reverseStr("qries")); // "seirq"
2. ใช้ Array.from()
function reverseStr(str) {
return Array.from(str).reverse().join('');
}
3. ใช้ reduce()
function reverseStr(str) {
return [...str].reduce((rev, char) => char + rev, '');
}
ข้อควรพิจารณา
- วิธี
split('').reverse().join('')แบบเก่ามีปัญหากับ Unicode Surrogate Pairs (อีโมจิ, ตัวอักษรพิเศษ) [...str](Spread Operator) จัดการ Unicode ได้ถูกต้อง- สำหรับประสิทธิภาพสูงสุดกับสตริงยาวมาก ให้ใช้ลูป
forหรือwhileแบบเดิม
สรุป
วิธีคลาสสิกใช้ลูป while ทำงานได้ดี แต่ใน ES6+ ควรใช้ [...str].reverse().join('') เพื่อความถูกต้องกับ Unicode และโค้ดสั้นกว่า