สมมติว่า เราต้องเขียนฟังก์ชัน พูด translate() ที่ยอมรับสตริงเป็นอาร์กิวเมนต์แรกและจำนวนคำใดๆ หลังจากนั้น
สตริงจะมีเครื่องหมาย n $ เช่นนี้ −
$0 นี้มากกว่า $1 เพียง $2 จากนั้นจะมี 3 สตริงที่จะแทนที่ตำแหน่งที่เกี่ยวข้อง
ตัวอย่างเช่น −
หากการเรียกใช้ฟังก์ชันเป็นแบบนี้ −
translate('This $0 is more $1 just a $2.', 'game', 'than', 'game');
ผลลัพธ์ของฟังก์ชันควรเป็น −
เกมนี้เป็นมากกว่าเกม
ฟังก์ชันนี้เหมือนกับการใส่เทมเพลตใน JavaScript
ดังนั้น เรามาเขียนโค้ดสำหรับฟังก์ชันนี้กัน −
เราจะใช้เมธอด String.prototype.replace() ที่นี่ เรารู้ว่าถ้าเราใช้รูปแบบ regex เพื่อให้ตรงกับเหตุการณ์ทั้งหมด และใช้ฟังก์ชันเป็นพารามิเตอร์ที่สอง พารามิเตอร์นั้นจะถูกดำเนินการสำหรับแต่ละรายการ เราจะทำเช่นเดียวกันที่นี่
รหัสสำหรับการทำเช่นนี้จะเป็น -
ตัวอย่าง
const str ='$0 นี้มากกว่า $1 แค่ $2';const translate =(str, ...texts) => { const regex =/\$(\d+)/gi; return str.replace(regex, (item, index) => { return texts[index]; });};console.log(translate(str, 'game', 'just', 'game'));ก่อน>ผลลัพธ์
ผลลัพธ์ในคอนโซลจะเป็น -
เกมนี้เป็นแค่เกมมากกว่า