ฟังก์ชันนี้คำนวณระยะทางจากตัวอักษรแต่ละตัวในสตริงไปยังสระ (vowel: a, e, i, o, u) ที่ใกล้ที่สุด
ตัวอย่าง
// Input: 'vatghvf' // Output: [1, 0, 1, 2, 3, 4, 5] // คำอธิบาย: v(1) a(0) t(1) g(2) h(3) v(4) f(5)
ตัวอย่างโค้ด
const str = 'vatghvf';
// ฟังก์ชันช่วย: หาระยะทางน้อยที่สุดจาก index ไปยังอาร์เรย์ตำแหน่งสระ
const nearest = (arr = [], el) => arr.reduce((acc, val) => Math.min(acc, Math.abs(val - el)), Infinity);
const vowelNearestDistance = (str = '') => {
const s = str.toLowerCase();
const vowelIndex = [];
// เก็บตำแหน่งของสระทั้งหมด
for (let i = 0; i < s.length; i++) {
if ('aeiou'.includes(s[i])) {
vowelIndex.push(i);
}
}
// คำนวณระยะทางสำหรับแต่ละตัวอักษร
return s.split('').map((el, ind) => nearest(vowelIndex, ind));
};
console.log(vowelNearestDistance(str));
ขั้นตอนการทำงาน
- แปลงสตริงเป็นตัวพิมพ์เล็ก
- สแกนหาตำแหน่งของสระทั้งหมด เก็บในอาร์เรย์
vowelIndex - สำหรับแต่ละตัวอักษร คำนวณระยะทางไปยังสระที่ใกล้ที่สุด
- ใช้
reduce()หาค่าMath.minของระยะทางสัมบูรณ์
ผลลัพธ์
[ 1, 0, 1, 2, 3, 4, 5 ]
ประยุกต์ใช้: การประมวลผลภาษาธรรมชาติ (NLP) การวิเคราะห์ข้อความ การสร้างเกมคำ