大神们帮我看看这段代码关于JS去重的

新手上路,请多包涵
var s = 'aaabbbcccaaabbbaaa';
var obj = {};
var maxn = -1;
var letter;
for(var i = 0; i < s.length; i++) {
  if(obj[s[i]]) {
    obj[s[i]]++;
    if(obj[s[i]] > maxn) {
      maxn = obj[s[i]];
      letter = s[i];
    }
  } else {
    obj[s[i]] = 1;
    if(obj[s[i]] > maxn) {
      maxn = obj[s[i]];
      letter = s[i];
    }
  }
}
 
alert(letter + ': ' + maxn);

这里面的obj[s[i]]什么意思 为什么要定义obj[s[i]]++和obj[s[i]]=1

阅读 1.9k
2 个回答

这段代码应该是计算字符串中数量最多的字母和数量。

obj[s[i]]是利用对象属性[]统计字母个数。

具体过程:
先循环字符串中的每个字母s[i],也就是'a','a','a','b','b','b','c','c',……
然后判断obj是否有对对应的属性obj[s[i]]也就是obj['a'],obj['b'],obj['c']…
如果有就计数加1(obj[s[i]]++);如果没有就添加属性,并计数为1(obj[s[]]=1)
循环过程中比较各个字母的计数得到最大值和对应的字母

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题