Javascript JS:编写一个函数,返回多次出现的不区分大小写的字母字符和数字的计数
我有以下问题:计算重复的数量 编写一个函数,返回输入字符串中多次出现的不区分大小写的字母字符和数字的计数。可以假定输入字符串仅包含字母数字字符,包括数字、大写字母和小写字母 范例Javascript JS:编写一个函数,返回多次出现的不区分大小写的字母字符和数字的计数,javascript,string,function,for-loop,count,Javascript,String,Function,For Loop,Count,我有以下问题:计算重复的数量 编写一个函数,返回输入字符串中多次出现的不区分大小写的字母字符和数字的计数。可以假定输入字符串仅包含字母数字字符,包括数字、大写字母和小写字母 范例 “abcde”->0(没有字符重复超过一次) “aabbcde”->2(#“a”和“b”) “aabbcdeB”->2(#“a”和“b”) “不可分割性”->(1#“i”) “不可分割性”->2(#“i”和“s”) “aa11”->2(#“a”和“1”) 我有下面的代码,看起来很有效,但我不太理解: functio
- “abcde”->0(没有字符重复超过一次)
- “aabbcde”->2(#“a”和“b”)
- “aabbcdeB”->2(#“a”和“b”)
- “不可分割性”->(1#“i”)
- “不可分割性”->2(#“i”和“s”)
- “aa11”->2(#“a”和“1”)
function countDuplicates(str) {
var myObj = {},
counter = 0;
for(var i = 0; i < str.length; i++){
if(!myObj[str[i]]){
myObj[str[i]] = 1;
}
else if(myObj[str[i]] < 2) {
myObj[str[i]]+=1;
counter++;
}
}
return counter;
}
函数重复计数(str){
var myObj={},
计数器=0;
对于(var i=0;i
是否可以逐行检查并快速解释代码的作用
myObj
myObj
添加与当前检查字符的值同名的属性,即myObj[str[i]]
您可以将其分解为:str[i]
等于g
,因此您将拥有myObject['g']
然后将编号
1
分配给myObject['g']
,使对象现在看起来像:
myObj:{
g:1
}c
,因此您正在执行与第3部分相同的操作,现在您的对象看起来像:
myObj:{
g:1,c:1
}myObj
中添加了一个字符,那么会发生什么呢?这是在if(!myObj[str[i]]){…}
中进行检查,所以这里发生的是,我们正在检查当前选中的字符是否已经添加到对象中。如果未添加,则添加值1
,如第3部分,例如!myObj[str[i]
与未定义的myObj['c']==相同(如果未定义,则将其添加到对象中)但是,如果已经添加了,我们将检查对象属性的值是否小于
2
(我们只想为指定的字符增加一次计数器),如果是,我们将增加计数器
(是的,我们找到了重复项)函数重复计数(文本){
var nText=text.toLowerCase();//这会将每个字符更改为小写
var myObj={};//声明一个空对象
var计数器=0;
对于(变量i=0;i
任务是编写函数,而不是复制粘贴它。如果您不理解代码,请尝试调试它。是的,可以逐行检查并快速解释代码所做的工作。我认为代码将因以下特殊要求而失败:不区分大小写
。作为一点帮助,当代码在字符串的字符上迭代时,它正在生成一个对象,其中键
是字符,值
是这些字符的频率。
function duplicateCount(text) {
var nText = text.toLowerCase(); //this changes every character to lower case
var myObj = {}; // Declaring an empty object
var counter = 0;
for (var i = 0; i < nText.length; i++) {
// assigning character as property and giving value 1
if (!myObj[nText[i]]){
myObj[nText[i]] = 1;
}//checking if character already added
else if (myObj[nText[i]] < 2) {
myObj[nText[i]] += 1;
counter++;
}
}
return counter;
}