Javascript 如何在Java脚本中查找和计算字符串中的元音,并在数组中返回元音?

Javascript 如何在Java脚本中查找和计算字符串中的元音,并在数组中返回元音?,javascript,arrays,string,Javascript,Arrays,String,我在运行代码时遇到了一个问题,代码应该在字符串中计算元音,然后在数组中返回元音。我在代码中找不到错误。谢谢你的帮助 <!DOCTYPE html> <html> <head> <title></title> <meta charset="utf-8"> <script> function vowels(a) { var a = "How are you today"; var numA = 0; var numE

我在运行代码时遇到了一个问题,代码应该在字符串中计算元音,然后在数组中返回元音。我在代码中找不到错误。谢谢你的帮助

<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8">
<script>
function vowels(a) {
var a = "How are you today";
var numA = 0;
var numE = 0;
var numI = 0;
var numO = 0;
var numU = 0;
var i;

for (i = 0; i <= a.length; i++){

    if (string.charAt(i) == "a" || "A") {
        var numA += 1;
    }
    if (string.charAt(i) == "e" || "E") {
        var numE += 1;
    }
    if (string.charAt(i) == "i" || "I") {
        var numI += 1;
    }
    if (string.charAt(i) == "o" || "O") {
        var numO += 1;
    }
    if (string.charAt(i) == "u" || "U") {
        var numU += 1;
    }
    }
    str = [numA, numE, numI, numO, numU];
}
</script>
</head>
<body>
    return(str);
</body>
</html>

功能元音(a){
var a=“你今天好吗”;
var numA=0;
var numE=0;
var numI=0;
var numO=0;
var numU=0;
var i;

对于(i=0;i只需检查字符是否为元音,如果是,则增加查找对象中的值:

function countVowels(string){
  const vowels = {};
  for(const char of string){
    if("aeiou".includes(char)){
        vowels[char] = (vowels[char] || 0) + 1;
    }
  }
  return vowels;
}
因此,我们可以:

const {a, e, i, o, u} = countVowels("aeeiiioooouuuuu");
console.log(a); //1

只需检查字符是否为元音,如果是,则增加查找对象中的值:

function countVowels(string){
  const vowels = {};
  for(const char of string){
    if("aeiou".includes(char)){
        vowels[char] = (vowels[char] || 0) + 1;
    }
  }
  return vowels;
}
因此,我们可以:

const {a, e, i, o, u} = countVowels("aeeiiioooouuuuu");
console.log(a); //1

试试这个,这是你试图做的,但很简单。如果你有任何问题,我可以回答你

首先声明要搜索的计数器对象和字符串

然后迭代这个字符串。对于每个字母,检查它是否在计数器对象中。如果不在,它应该返回
undefined
。为了避免不必要的代码,可以将它们全部放在小写字母中

如果字母在计数器中,只需在计数器中添加1即可

在那之后,我只需要记录计数器,这比将其添加到HTML中要快

const计数器={
答:0,,
e:0,
i:0,
o:0,
u:0,
y:0
};
const str=“你今天好吗”;
for(str的常量字符){
if(计数器[char]!==未定义){
计数器[char.toLowerCase()]+;
}
}

console.log(counters);
试试这个,这是你试图做的,但很简单。如果你有任何问题,我可以回答你

首先声明要搜索的计数器对象和字符串

然后迭代这个字符串。对于每个字母,检查它是否在计数器对象中。如果不在,它应该返回
undefined
。为了避免不必要的代码,可以将它们全部放在小写字母中

如果字母在计数器中,只需在计数器中添加1即可

在那之后,我只需要记录计数器,这比将其添加到HTML中要快

const计数器={
答:0,,
e:0,
i:0,
o:0,
u:0,
y:0
};
const str=“你今天好吗”;
for(str的常量字符){
if(计数器[char]!==未定义){
计数器[char.toLowerCase()]+;
}
}

console.log(counters);
虽然有很多更好的方法,而且所有其他的答案都会给你一些很好的简短方法,但我认为,考虑到你代码中当前的问题,你可能会发现这些速记方法令人困惑。我将坚持使用你原来的代码,并尝试解决这个问题

尽管你一定要看一下速记答案,如果你觉得舒服,就接受其中一个作为答案

  • 您正在为
    a
    分配字符串值,但在
    string
    上调用
    charAt()
  • 您在开始时声明变量,即:
    var numA
    ,但每次要增加它们的值时,都要重新声明它们
  • 您没有使用正确的语法来比较这两个条件,因为您需要显式
    a.charAt(i)=“a”| | a.charAt(i)=“a”
var a=“你今天怎么样”;
var numA=0;
var numE=0;
var numI=0;
var numO=0;
var numU=0;
var i;

对于(i=0;i,虽然有很多更好的方法可以做到这一点,而且所有其他的答案都会给你一些很好的简短方法,我认为,考虑到你代码中当前的问题,你可能会发现简写方法令人困惑。我将坚持使用你原来的代码,并尝试解决这个问题

尽管你一定要看一下速记答案,如果你觉得舒服,就接受其中一个作为答案

  • 您正在为
    a
    分配字符串值,但在
    string
    上调用
    charAt()
  • 您在开始时声明变量,即:
    var numA
    ,但每次要增加它们的值时,都要重新声明它们
  • 您没有使用正确的语法来比较这两个条件,因为您需要显式
    a.charAt(i)=“a”| | a.charAt(i)=“a”
var a=“你今天怎么样”;
var numA=0;
var numE=0;
var numI=0;
var numO=0;
var numU=0;
var i;
对于(i=0;i
string.charAt(i)=“a”| | a”
应该是
string.charAt(i)=“a”| | string.charAt(i)=“a”
(等等),但是有更好的方法来做到这一点。(Y不是元音吗?
string.charAt(i)=“a”| | a”
应该是
string.charAt(i)=“a”
,但有更好的方法可以做到这一点。(Y不是元音吗?)