標籤:思維 字元 接收 join 交流 asc 遍曆 組成 fine
以下為“空思想一”,未完待續~~~(歡迎大家留言評論,誠懇與大家共同進步!)
(若發現錯誤,拜託指正,本人重謝)
null與undefined有很大的區別,知道就行。但是學習不僅在於知道,學以致用才算是自己的。本篇只為"空思想"之引入,以後會繼續更新。敬請期待!有想法的,歡迎回複討論。可在評論留言互動,可發郵箱([email protected])!
<script>
//【總結】字串或數組中重複字元及次數
//推薦方法:
//正則方式:1,先把原字串重複的字元放在一起;2,利用正則分開不重複的字元;3,按重複次數排序。
//常規方法:(原理很重要,深化學習,鍛煉思維)
//重複處理:Null 物件接收,for-if-else。if分支判斷不存在,用來匯入並初始化(首次出現的值,Null 物件中不存在,滿足條件即執行匯入並初始化) ;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>
【正在看本人部落格的這位童鞋,我看你氣度不凡,談吐間隱隱有王者之氣,日後必有一番作為!下面有個“頂”字,你就順手把它點了吧!
當然也可以“關注”和“收藏”,但我更希望大家能發表評論、互動交流。大家一起探討學習,效率是不是會更高呢?(要先登入部落格園帳號哦 )】
【總結】【空思想一】字串或數組中重複字元及次數