โจทย์: เขียนฟังก์ชัน reverseString(str) คืนค่า String ที่กลับตัวอักษร เช่น "Hello World!" → "!dlroW olleH"
วิธีที่ 1: For Loop (มาตรฐาน)
function reverseString(str) {
let newStr = '';
for (let i = str.length - 1; i >= 0; i--) {
newStr += str[i];
}
return newStr;
}
วนจาก index สุดท้ายลงมา 0 รวมตัวอักษรทีละตัว
วิธีที่ 2: ES6 map()
function reverseString(str) {
let newArr = str.split('');
let rev = newArr.map((letter, index, array) => {
let swapIndex = array.length - index - 1;
return array[swapIndex];
});
return rev.join('');
}
split('') แปลง String เป็น Array → map() สลับตำแหน่ง → join('') รวมกลับเป็น String
วิธีที่ 3: Built-in Methods (One-liner)
function reverseString(str) {
return str.split('').reverse().join('');
}
สั้นที่สุด แต่อย่าลืมว่า reverse() แก้ไข Array ต้นฉบับ (mutate) หากต้องเก็บต้นฉบับ ให้ copy ก่อน
เปรียบเทียบ
| วิธี | ความยาวโค้ด | ประสิทธิภาพ | หมายเหตุ |
|---|---|---|---|
| For Loop | ปานกลาง | ดีมาก | เข้าใจง่าย ควบคุมได้ |
| map() | ยาว | ดี | Functional style ไม่ mutate ต้นฉบับ |
| split/reverse/join | สั้นที่สุด | ดี | Mutate array ต้องระวัง |
สรุป
มีหลายวิธี reverse string ใน JavaScript เลือกตามความชอบ For loop เข้าใจง่าย Built-in สั้นที่สุด map() เป็น functional approach