了解JavaScript代码,用于计算字符串中每个字符的出现次数

时间:2017-10-07 19:58:14

标签: javascript javascript-objects

我需要一些帮助来理解以下代码:

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'时未定义?

5 个答案:

答案 0 :(得分:2)

1。 AllChars函数

您的函数将字符串作为参数并循环遍历字符串(str)...并且对于每个循环,它将检索字符串中的下一个字符。

  1. 现在,如果之前还没有遇到角色,那就是 添加到&#34;空&#34;对象作为键,其值为0。这样,它就会在字符串str中创建该字符出现的计数器。

  2. 否则(如果它(该字符:str[i])已经存在 遇到了),不用再在myObj索引它了。

  3. 在每个循环结束时,计数器(当前字符)递增。

    在函数结束时,返回myObj

    2。 AllChars('banana');

    此行调用上面定义的函数AllChars,并将字符串'banana'作为参数。

    3。输出

    输出建议我从javascript控制台运行代码,该控制台输出从myObj返回的AllChars('banana');的值

    它是浏览器控制台或node.js控制台。

    因此输出代表了(key =&gt; value)对象。

    {b: 1, a: 3, n: 2}
    

答案 1 :(得分:0)

myObj是一个新的空对象。所以正在检查的是,如果我们开始计算那个字母,如果没有它将它初始化为0。

答案 2 :(得分:0)

代码计算每个字母在给定字符串中出现的次数。 如果没有这样的信件,它会添加一封信作为财产,并在增加后计算。

答案 3 :(得分:0)

每当你试图从一个不存在的物体中获取某物时,它将返回未定义的物品。上面的代码只是利用该功能作为检查天气的一种方式,而不是来自&#39; str的信。参数出现在myObj对象中。

答案 4 :(得分:0)

计算字符串中每个字符的出现次数。 ES6解决方案更优雅:

const chars = string =>
  [...string].reduce(
    (all, e) => ({ ...all, [e]: !all[e] ? 1 : all[e] + 1 }),
    {}
  );

const chars = string =>
  [...string].reduce(
    (all, e) => ({ ...all, [e]: !all[e] ? 1 : all[e] + 1 }),
    {}
  );

console.log(
  chars('bananaa')
)