国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JS查找字符串中出現(xiàn)次數(shù)最多的字符

2024-05-06 15:45:31
字體:
供稿:網(wǎng)友

下面的錯新技術(shù)頻道將為大家提供簡單的示例操作,用于判斷JS中最頻繁出現(xiàn)的字符和字符串中出現(xiàn)的次數(shù),現(xiàn)在,讓我們與您分享JS查找字符串中出現(xiàn)次數(shù)最多的字符吧。

先介紹兩個string對象中的兩個方法:indexOf()和charAt()方法

indexOf()方法介紹  返回某個指定的字符串值在字符串中首次出現(xiàn)的位置

charAt()方法介紹  返回某個指定位置的字符

先做一個小測試,找到字符串'woainixiaoli'中的每一個'i'出現(xiàn)的位置。

<script>var arr = 'woainixiaoli';var index = -1; //定義變量index控制索引值//當(dāng)查找不到a,即indexOf()的值為-1時,結(jié)束循環(huán)do {index = arr.indexOf("i", index + 1); //使用第二個參數(shù)index+1,控制每一次查找都是從上一次查找到字符a的下一個索引位置開始if (index != -1) { //可以找到字符iconsole.log(index); //輸出a的位置}} while (index != -1);</script>

以上代碼運行后再控制臺輸出的是

進入正題,求字符串'zhaochucichuzuiduodezifu'最多的字符

方法一:用數(shù)組(存在缺點,當(dāng)出現(xiàn)最多的字符不只一個時,只能找到一個)

<script>var str = "zhaochucichuzuiduodezifu";var arr = [];//定義一個新數(shù)組//循環(huán)遍歷字符串for (var i = 0, length = str.length; i < length; i++) {var index = -1;var j = 0;//找每一個字符do {index = str.indexOf(str[i], index + 1);if (index != -1) {j++;}}while (index != -1);arr[j] = str[i]; //把字符串str中的字符賦給數(shù)組arr索引為j的數(shù)據(jù),當(dāng)多次循環(huán)后,會出現(xiàn)重復(fù)賦值的現(xiàn)象,                    //后賦值的會把之前的賦值覆蓋掉,但不影響我們找出字符出現(xiàn)最多的那個}console.log(arr);console.log("最多的字符是" + arr[arr.length - 1]);console.log("次數(shù)是" + (arr.length - 1));</script>

以上代碼運行后再控制臺輸出的結(jié)果如下圖:

  從輸出的數(shù)組arr中也可以看出,此方法會把次數(shù)相同的字符覆蓋,只能顯示出一個。若有2個字符出現(xiàn)出現(xiàn)相同的最高次數(shù),此方法只能得出一個。基于此,參照下一個用對象來解決的方法。

方法二:用對象(推薦使用)

<script>var str = "zhaochucichuzuiduodezifu";var o = {};for (var i = 0, length = str.length; i < length; i++) {// var char = str[i];var char = str.charAt(i);if (o[char]) { //char就是對象o的一個屬性,o[char]是屬性值,o[char]控制出現(xiàn)的次數(shù)o[char]++; //次數(shù)加1} else {o[char] = 1; //若第一次出現(xiàn),次數(shù)記為1}}console.log(o); //輸出的是完整的對象,記錄著每一個字符及其出現(xiàn)的次數(shù)//遍歷對象,找到出現(xiàn)次數(shù)最多的字符和次數(shù)var max = 0;var maxChar = null;for (var key in o) {if (max < o[key]) {max = o[key]; //max始終儲存次數(shù)最大的那個maxChar = key; //那么對應(yīng)的字符就是當(dāng)前的key}}console.log("最多的字符是" + maxChar);console.log("出現(xiàn)的次數(shù)是" + max);</script>

以上代碼運行后再控制臺輸出的結(jié)果如下圖:

  此方法解決了方法一的問題,而且每一個字符我們都可以清楚的記錄出現(xiàn)的次數(shù),當(dāng)有兩個次數(shù)相同的字符時,可以在對象中清楚的看到。

  不過還是存在不足,不能直接把次數(shù)最高的字符同時輸出,這還需要加額外的判斷條件。完美的代碼如下哈O(∩_∩)O

<script>var str = "nininihaoa";var o = {};for (var i = 0, length = str.length; i < length; i++) {var char = str.charAt(i);if (o[char]) {o[char]++; //次數(shù)加1} else {o[char] = 1; //若第一次出現(xiàn),次數(shù)記為1}}console.log(o); //輸出的是完整的對象,記錄著每一個字符及其出現(xiàn)的次數(shù)//遍歷對象,找到出現(xiàn)次數(shù)最多的字符的次數(shù)var max = 0;for (var key in o) {if (max < o[key]) {max = o[key]; //max始終儲存次數(shù)最大的那個}}for (var key in o) {if (o[key] == max) {//console.log(key);console.log("最多的字符是" + key);console.log("出現(xiàn)的次數(shù)是" + max);}} </script>

結(jié)果如下:

以上就是關(guān)于JS查找字符串中出現(xiàn)次數(shù)最多的字符,相信認(rèn)真看完的朋友都已經(jīng)懂了,我們還有更多的資訊,敬請關(guān)注js.VeVb.com哦。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 新兴县| 息烽县| 呼伦贝尔市| 台东市| 读书| 澄迈县| 象山县| 德惠市| 河南省| 湘潭县| 鄂托克旗| 房山区| 武山县| 峨山| 松潘县| 潍坊市| 桓台县| 抚顺县| 葵青区| 淮安市| 金山区| 轮台县| 丰城市| 商丘市| 浦县| 岗巴县| 晋中市| 秀山| 香格里拉县| 怀柔区| 岐山县| 湖南省| 永嘉县| 澄江县| 宜昌市| 古丈县| 股票| 长泰县| 郑州市| 克什克腾旗| 福建省|