Javascript:以元音为键、以计数为值填充对象的函数

标签 javascript function object for-loop

和以前一样,我已经四处寻找答案,我只是一个初学者,我正在努力从中学习,而不仅仅是得到答案。

var voweler = function (str) {
  var strArr = str.split('')
  var obj = {};
  for (var i = 0; i < strArr.length; i++) {
    if (strArr[i] == 'a') {
      obj.a = 0;
      obj.a++;
    } else if (strArr[i] == 'e') {
      obj.e = 0;
      obj.e++;
    } else if (strArr[i] == 'i') {
      obj.i = 0;
      obj.i++;
    } else if (strArr[i] == 'o') {
      obj.o = 0;
      obj.o++;
    } else if (strArr[i] == 'u') {
      obj.u = 0;
      obj.u++;
    }
  };
  return obj;
}
voweler("This is a test")
//returns this which is wrong. Object {i: 1, a: 1, e: 1}

最佳答案

您更新计数的代码是错误的。遇到每个元音,你运行obj.<vowel> = 0这会重置计数!要解决此问题,请在进入 for 循环之前设置计数,然后在 for 循环中,只增加计数器。

如果您希望仅在元音存在时有一个条目,您可以有条件地递增:

if(strArr[i] == <some_vowel>){
    if(obj.<some_vowel> === undefined)obj.<some_vowel> = 1;
    else obj.<some_vowel> ++;
}

关于Javascript:以元音为键、以计数为值填充对象的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29763871/

相关文章:

javascript - 使用 jQuery 获取输入值。可以用,但是确认错误

javascript - 在异步函数reactjs之后调用另一个组件的方法

javascript - 如果我将一个数组传递给 JS 函数,它似乎不会修改该数组。难道不应该通过引用传递吗?

python - 如何在 Python 中获得与 C 的 __FUNCTION__ 相同的功能?

javascript - 在javascript中将一个简单的java对象重新排序为3级对象

javascript - 访问值是否在对象内部

javascript - 如何使用HSL到RGB转换功能

javascript - 使用 React : Uncaught TypeError: Cannot read property 'clientWidth' of null 自定义鼠标光标

javascript - 按卡片标题过滤只会带来文本,而不是包含所有元素的整张卡片

javascript - for 循环中的 If-else 不起作用 - Javascript