用Javascript计算段落中的音节

用Javascript计算段落中的音节,javascript,flesch-kincaid,Javascript,Flesch Kincaid,我正在从事一个项目,该项目要求我为输入框中输入的文本返回Flesch可读性索引。公式如下: 206.835-85.6(number of syllables / number of words)-1.015(number of words / number of sentences) 我已经学会了如何数词,也很确定我知道如何数句子,但我不知道如何去数数音节 下面是我得到的关于什么可以算作音节的信息: Each group of adjacent vowels (a, e, i, o, u, y

我正在从事一个项目,该项目要求我为输入框中输入的文本返回Flesch可读性索引。公式如下:

206.835-85.6(number of syllables / number of words)-1.015(number of words / number of sentences)
我已经学会了如何数词,也很确定我知道如何数句子,但我不知道如何去数数音节

下面是我得到的关于什么可以算作音节的信息:

Each group of adjacent vowels (a, e, i, o, u, y) counts as one syllable.
Each word has at least one syllable even if the above rule gives it a count of 0.
有没有人愿意为我指明正确的方向,告诉我该怎么做

更新 我已经写了一些代码,但在运行时遇到了困难。我发布了一个指向我正在处理的JSFIDLE的链接,作为对下面答案的评论,以及我遇到的问题。如果有人愿意检查一下,看看你是否能帮我找出我做错了什么(除此之外,很可能还有更有效的方法),我将不胜感激

伪代码:

for each letter in word:
    if letter is vowel, and previous letter is not vowel or this is the first letter, increment numSyllables

if numSyllables is 0, set numSyllables to 1
可以使用布尔值作为标志来确定前一个字母是否为元音

要循环遍历单词中的每个字母:

var word = "test",
    i;
for(i = 0; i < word.length; i++) {
    console.log(word[i]);
}
var word=“test”,
我
for(i=0;i
谢谢!我想最让我讨厌的事情之一就是如何让它一次读每一封信,如果这有意义的话。比如,我理解你的伪代码是如何工作的,但就像“单词中的每个字母”,不知道如何完成每个字母的部分。在JavaScript中,您可以像数组一样索引到字符串中。我将在我的答案中添加一个示例。在使其工作时遇到一些问题。当我尝试在我的web浏览器中测试它时,页面锁定,我得到一个“无响应脚本”错误,在运行调试器时,由于我邪恶的长if语句,该错误似乎正在发生。我对使用浏览器调试器的知识非常有限,所以我不确定是什么导致了这种情况。这里有一个指向我正在使用的JSFIDLE的链接,如果您不介意的话,您认为可以看一下吗?我确信有一种更有效的方法来写这篇文章,但我不确定如何去做。我注意到一些打字错误已经通过JSFIDLE上的错误捕捉器漏掉并更正了它们,但是,我仍然得到了相同的结果。这是最新的小提琴链接