我正在尝试编写JavaScript函数 LetterCount 来计算字符串中连续字母的数量(而不是总数),但一直没有成功。
理想情况下: LetterCount("eeeeeoooohhoooee") = [["e", 5],["o",3],["h",2],["o",3],["e",2]]
以下代码仅在已知连续字母时才尝试计算字符串中连续字母的数量:
在上面的代码中,我需要首先知道字符串中的字母是什么,以及它们有多少个,以什么顺序出现。
相反,你应该编写一个函数,能够自动识别字母本身,并返回连续字母的计数。如果答案格式如下,那就更好了:
理想情况下: LetterCount("eeeeeoooohhoooee") = [["e", 5],["o",3],["h",2],["o",3],["e",2]]
以下代码仅在已知连续字母时才尝试计算字符串中连续字母的数量:
function LetterCount(str) {
for (var i=0; i<str.length;i++) {
var arr1=[]; arr2=[]; arr3=[]; arr4=[]; arr5=[];
var e=0; o=0; h=0; o2=0; e2=0;
if(str[i]="e") {
arr1 += "e";
e++;
}
arr1.push(e);
if(str[i]="o") {
arr2 += "o";
o++;
}
arr2.push(o);
if(str[i]="h") {
arr3 += "h";
h++;
}
arr3.push(h);
if(str[i]="o") {
arr4 += "o";
o2++;
}
arr4.push(o2);
if(str[i]="e") {
arr5 += "e";
e2++;
}
arr5.push(e2);
}
return arr1.concat(arr2).concat(arr3).concat(arr4).concat(arr5);
}
在上面的代码中,我需要首先知道字符串中的字母是什么,以及它们有多少个,以什么顺序出现。
相反,你应该编写一个函数,能够自动识别字母本身,并返回连续字母的计数。如果答案格式如下,那就更好了:
LetterCount("eeeeeoooohhoooee") = [["e", 5],["o",3],["h",2],["o",3],["e",2]]
非常感谢您的帮助!
map
。比我的答案好多了 :) - Jonathan Grayvar s= str.match(/([a-zA-Z])\1*/g)||[];
的基本含义是,如果str.match(...)
返回假值,例如0
,null
或undefined
,则将一个空数组分配给s
,而不是分配str.match
返回的值。 - Jonathan Gray||
的解释是它实际上不像一个“或”语句那样工作,而是会一直执行直到遇到一个真值(或者说非假值)才返回。如果找不到真值,它将返回false(或至少是一个假值)。另一方面,&&
则完全按预期工作,并将返回true或false。 - Jonathan Gray