我需要一些帮助来理解以下代码:
function AllChars(str) {
var myObj = {};
for(var i=0;i<str.length;i++){
if(myObj[str[i]]===undefined){
myObj[str[i]]=0;
}
myObj[str[i]]++;
}
return myObj;
}
AllChars('banana');
Output
{b: 1, a: 3, n: 2}
它基本上返回一个对象,其中每个键都是给定字符串中的一个字符。问题如下:
for 循环从 0 运行到字符串的长度。然后 if 函数检查第一个元素 str[0] 应该是字母“b”,然后将这个字母“b”添加到 myObj[str[i]]] 这就是我不明白为什么 myObj [str[0]] 在 str[0] 中为“b”时未定义?
最佳答案
1。 AllChars
函数
您的函数接受一个字符串作为参数并循环遍历该字符串 (str
)...并且对于每个循环,它都会检索字符串中的下一个字符。
现在,如果该字符之前尚未遇到过,则它是 添加到“空”对象作为键,其值为
0
。这样,它就创建了字符串str
中该字符出现次数的计数器。否则(如果它(该字符:
str[i]
)已经被 遇到),无需在myObj
中再次索引。
在每个循环结束时,(当前字符的)计数器递增。
在函数结束时,返回myObj
。
2。 AllChars('香蕉');
此行调用上面定义的函数 AllChars
,并以字符串 'banana'
作为参数。
3。输出
输出表明代码是从 JavaScript 控制台运行的,该控制台输出从 AllChars('banana');
返回的 myObj
值p>
它是浏览器控制台或node.js 控制台。
因此输出代表该(键 => 值)对象。
{b: 1, a: 3, n: 2}
关于javascript - 了解用于计算字符串中每个字符出现次数的 JavaScript 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46624535/