和以前一样,我已经四处寻找答案,我只是一个初学者,我正在努力从中学习,而不仅仅是得到答案。
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/