我的代码:
function letterCounter(str) {
var letters = 0;
var alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
for (var i=0; i<str.length;i++) {
if (str[i] === alphabet.split("")) {
letters = letters + str[i];
}
}
console.log(letterCounter("Hello World!!!1"));
}
我不确定自己犯了什么错误,我收到0封信作为答案。 谢谢。
答案 0 :(得分:5)
您正在使用str[i] === alphabet.split("")
将字符与代码中的数组进行比较,这是没有意义的,您需要检查字符是否在数组中。此外,console.log
不能在函数内部,否则将无限次地递归调用。
使用
function letterCounter(str) {
var letters = 0;
var alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
var ar = alphabet.split("");
for (var i=0; i<str.length;i++) {
if (ar.indexOf(str[i]) > -1) {
letters = letters + 1;
}
}
return letters;
}
console.log(letterCounter("Hello World!!!1"));
&#13;
另一种方法是使用正则表达式:
var s = "Hello World!!!1";
var rx = /[a-z]/gi;
var m = s.match(rx);
if (m) {
console.log(m.length);
}
&#13;
答案 1 :(得分:1)
您可以使用正则表达式:
function letterCounter (x) {
return x.replace(/[^a-zA-Z]/g, '').length;
}
console.log(letterCounter('Hello World!!!1'))
&#13;
答案 2 :(得分:1)
要计算字母{0: Array(2), 1: Array(11), 2: Array(3), 3: Array(7), 4: Array(5), 5: Array(4)}
的数量,例如:
e
然后使用此循环计算每个元素的计数