Javascript 如何迭代字符串并将字符推送到对象

Javascript 如何迭代字符串并将字符推送到对象,javascript,Javascript,我试图创建一个函数,在这个函数中,我接受一个包含元音的字符串,并对其进行迭代,然后将元音推送到一个对象中。我使用的是forEach循环,我不能使用任何其他类型的循环来检查每个字符,看看它是否是元音,如果是元音,我将元音字符设置为对象键,元音出现的次数将是值。以下是我目前的代码: function vowelCount(str) { let obj = {} str.split(' ') str.forEach(function(val) { obj.val = 'hi'

我试图创建一个函数,在这个函数中,我接受一个包含元音的字符串,并对其进行迭代,然后将元音推送到一个对象中。我使用的是forEach循环,我不能使用任何其他类型的循环来检查每个字符,看看它是否是元音,如果是元音,我将元音字符设置为对象键,元音出现的次数将是值。以下是我目前的代码:

function vowelCount(str) {
  let obj = {}
  str.split(' ')
  str.forEach(function(val) {
    obj.val = 'hi'
    
  })
  return obj
}
我知道还有很多工作要做,但我不确定如何将与元音相等的键和出现次数设置为值。

obj.val正在访问obj的属性val,所以要动态访问它,它应该是obj[val]

函数是元音{ 返回aeiou.includeschar } 函数元音计数器str{ 设obj={} str.split.forEachfunction val{ 如果是元音{ obj[val]=obj[val]| | 0+1 } } 返回obj } console.logvuelCoundaeiouaeiouaaaiiobj.val正在访问obj的属性val,所以要动态访问它,它应该是obj[val]

函数是元音{ 返回aeiou.includeschar } 函数元音计数器str{ 设obj={} str.split.forEachfunction val{ 如果是元音{ obj[val]=obj[val]| | 0+1 } } 返回obj } console.logvouelcontaiouaeiouaaaii 如果需要,可以始终过滤值以排除零计数。 不要害怕用于迭代的其他函数,如:

const vowelCount = (str = '') =>
  str.split('').reduce(
    (vowels, ch) => {
      if (vowels[ch]) {
        vowels[ch]++;
      }
      return vowels;
    },
    { a: 0, e: 0, i: 0, o: 0, u: 0 }
  );
如果需要,可以始终过滤值以排除零计数。 不要害怕用于迭代的其他函数,如:

const vowelCount = (str = '') =>
  str.split('').reduce(
    (vowels, ch) => {
      if (vowels[ch]) {
        vowels[ch]++;
      }
      return vowels;
    },
    { a: 0, e: 0, i: 0, o: 0, u: 0 }
  );

您可以创建一个包含所有元音的元音集,然后迭代提供的字符串str,并根据obj对象中的现有计数添加计数:

函数元音计数器str{ 设obj={} const chars=str.tolocalLowercase.split; 常量元音=新集合[a,e,i,o,u]; chars.forEachc=>{ if元音.hasc{ obj[c]=obj[c]| | 0+1; } }; 返回obj }
console.logvouelCountHello World!这是一个计算元音的函数 您可以创建一个包含所有元音的元音集,然后迭代提供的字符串str,并根据obj对象中的现有计数添加计数:

函数元音计数器str{ 设obj={} const chars=str.tolocalLowercase.split; 常量元音=新集合[a,e,i,o,u]; chars.forEachc=>{ if元音.hasc{ obj[c]=obj[c]| | 0+1; } }; 返回obj }
console.logvouelCountHello World!这是一个计算元音的函数;非常感谢你!你真的帮我解决了这个问题。非常感谢!你真的帮我解决了这个问题,说得通。谢谢你能帮我解释一下这行代码吗:obj[val]=obj[val]| | 0+1@azaria.deeobj[val]| | 0正在获取obj[val]的值,如果未定义,则使用0作为默认值是有意义的。谢谢你能帮我解释一下这行代码吗:obj[val]=obj[val]| | 0+1@azaria.deeobj[val]| | 0正在获取obj[val]的值,如果未定义,请使用0作为默认值谢谢您的惩罚!谢谢你的惩罚!