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
这段代码应该是计算字符串中数量最多的字母和数量。
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)
循环过程中比较各个字母的计数得到最大值和对应的字母