javascript 如何编写好的代码来计算单词中元音的个数?

vh0rcniy  于 2023-03-06  发布在  Java
关注(0)|答案(3)|浏览(164)

我想创建一个名为countVowels的函数,它接受string作为参数,名为word,并返回单词中元音的个数。
我想出了两个解决方案,但我不知道他们是否是好的解决方案。
我想我甚至不知道如何判断什么是"好"代码。
我的问题是...
1.我提出的解决方案可能存在什么问题?
1.如果它们不是理想的,那么在这种情况下什么是理想码?为什么?
这些解决方案是我想出来的,但我不知道它们是不是好的解决方案。
我想我甚至不知道如何判断什么是"好"代码。
我能得到一些关于这些的代码评审吗?我想出的解决方案可能有什么问题?

  • 第一个解决方案 *
function countVowels(word){
    let vowels = ["a","e","i","o","u"];
    let index = 0;
    for (let i = 0; i < word.length; i++){
        for (let j = 0; j < vowels.length; j++){
            if (word[i] == vowels[j]){
                index += 1;
            }
        }
    }
    return index;
};
  • 第二种解决方案 *
function countVowels(word){
    let vowels = ["a","e","i","o","u"];
    let index = 0;
    for (let i = 0; i < word.length; i++) {
        if (vowels.includes(word[i])) {
            index += 1;
        }
    }
    return index;
};
zysjyyx4

zysjyyx41#

这里我更喜欢正则表达式替换方法:

function countVowels(word) {
    return word.length - word.replace(/[aeiou]/gi, "").length;
}

var input = "peninsula";
var numVowels = countVowels(input);
console.log(input + " has " + numVowels + " vowels.");

这里我们将输入字符串中的元音数定义为原始长度减去相同输入的长度(去掉所有元音)。

i7uaboj4

i7uaboj42#

你的第二个解决方案更容易阅读和理解。
下面是我能想到的另一个解决方案,类似于你的第二个解决方案,但是没有for循环:

function countVowels(word) {
  const vowels = ["a", "e", "i", "o", "u"];
  const foundVowels = [...word].filter((char) => vowels.includes(char))
  return foundVowels.length
};

console.log(countVowels("peninsula"))
ssgvzors

ssgvzors3#

function countVowels(word){
    return word.split("").filter(e=>/[aeiou]/.test(e)).length;
}
console.log(countVowels("peninsula"));

相关问题