บทความนี้สาธิตฟังก์ชัน JavaScript ที่รับสตริงภาษาอังกฤษและคืนค่าออบเจกต์ที่มีจำนวนสระ (vowels) และพยัญชนะ (consonants)
ตัวอย่างโค้ด
const str = 'This is a sample string, will be used to collect some data';
const countAlpha = str => {
return str.split('').reduce((acc, val) => {
const legend = 'aeiou';
let { vowels, consonants } = acc;
if (val.toLowerCase() === val.toUpperCase()) {
return acc; // ข้ามตัวอักษรที่ไม่ใช่พยัญชนะ/สระ (เช่น รูปสัญลักษณ์, ช่องว่าง)
}
if (legend.includes(val.toLowerCase())) {
vowels++;
} else {
consonants++;
}
return { vowels, consonants };
}, {
vowels: 0,
consonants: 0
});
};
console.log(countAlpha(str));
ผลลัพธ์
{ vowels: 17, consonants: 29 }
คำอธิบาย
ใช้ split('') แยกตัวอักษร แล้ว reduce สะสมค่า ตรวจสอบว่าเป็นตัวอักษรภาษาอังกฤษด้วยการเปรียบเทียบ toLowerCase และ toUpperCase (ถ้าเท่ากันแสดงว่าไม่ใช่ตัวอักษร)
ตรวจสอบว่าอยู่ใน 'aeiou' หรือไม่ เพื่อแยกสระ/พยัญชนะ