【总结】【空思想一】字符串或数组中重复字符及次数
以下为“空思想一”,未完待续~~~(欢迎大家留言评论,诚恳与大家共同进步!)
(若发现错误,拜托指正,本人重谢)
null与undefined有很大的区别,知道就行。但是学习不仅在于知道,学以致用才算是自己的。本篇只为"空思想"之引入,以后会继续更新。敬请期待!有想法的,欢迎回复讨论。可在评论留言互动,可发邮箱(1412451704@qq.com)!
<script>
//【总结】字符串或数组中重复字符及次数
//推荐方法:
//正则方式:1,先把原字符串重复的字符放在一起;2,利用正则分开不重复的字符;3,按重复次数排序。
//常规方法:(原理很重要,深化学习,锻炼思维)
//重复处理:空对象接收,for-if-else。if分支判断不存在,用来导入并初始化(首次出现的值,空对象中不存在,满足条件即执行导入并初始化) ;else分支判断存在,用来累加(遍历后再次出现,就重复了,判断为存在,执行累加过程)。
//审查结果:空变量存值,for-if。遍历找符合条件的(次数就初始化为0。可理解为,把条件初始化为最不符合条件的值,迭代变量,条件应该有最值),迭代一次,符合条件就修改一次变量值,再找就在判断,直至找到符合条件的就保存下来,迭代继续,以后不在符合条件,就不在修改。
var str = 'aaabbbcccaaabbbaaabbbbbbbbbb';
// 0123456
var json = {};
for (var i = 0; i < str.length; i++) {
if(!json[str.charAt(i)]){//判断存在 首次i=0,json["a"]不存在,json["a"]=1;
// if(json[str.charAt(i)]===undefined){//==不报错,但提示错,不合规范
json[str.charAt(i)] = 1;
}else{//i=6,json["a"]存在,json["a"]=1,1++=2,json["a"]=2;
json[str.charAt(i)]++;
}
};
var num = 0;//存最多次数 value
var char = '';//存对应字符 key
for(var key in json){//var key in json
if(json[key]>num){
num= json[key];
char = key;
}
}
alert('出现次数最多的是:'+char+',出现'+num+'次');
// console.log(json);//{a: 9, s: 7, d: 1, f: 1}
// console.log(json["a"]);//9
console.log('出现次数最多的是:'+char+',出现'+num+'次');//9
//推荐方法:
//正则方式:1,先把原字符串重复的字符放在一起;2,利用正则分开不重复的字符;3,按重复次数排序
var s =str;//s='aaabbbcccaaabbbaaabbbbbbbbbb';
var a = s.split('');
// console.log(a);//返回一个由s中单个字符组成的数组
a.sort();
s = a.join('');
// console.log(s);//返回一个由数组a中字符按ASC排序后的字符串
//实现将原字符串按ASC码排序,重复的在一起,重复的ASC码必相等
var pattern = /(\w)\1*/g;//全局匹配相邻重复。必须全局匹配(没有g,匹配一次就结束)。
var ans = s.match(pattern);
console.log(ans);
ans.sort(function(a, b) {//比较器看参数a-b的结果,为正升序,负就降序(不能加括号,传入sort中的是一个回调函数,将一个函数体作为参数传入另一个函数中反复使用;加括号表示传入的仅仅一个函数执行的返回值)
return a.length < b.length;//长度降序
// return b.length-a.length;//长度降序
});
console.log(ans);
console.log(ans[0][0] + ': ' + ans[0].length);
</script>
【正在看本人博客的这位童鞋,我看你气度不凡,谈吐间隐隐有王者之气,日后必有一番作为!下面有个“顶”字,你就顺手把它点了吧!
当然也可以“关注”和“收藏”,但我更希望大家能发表评论、互动交流。大家一起探讨学习,效率是不是会更高呢?(要先登录博客园账号哦 )】