第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于一道面試題,js中查找字符串中出現次數最多的字符

關于一道面試題,js中查找字符串中出現次數最多的字符

慕運維8079593 2019-03-21 18:15:53
<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]控制出現的次數o[char]++; //次數加1} else {o[char] = 1; //若第一次出現,次數記為1}}console.log(o); //輸出的是完整的對象,記錄著每一個字符及其出現的次數//遍歷對象,找到出現次數最多的字符和次數var max = 0;var maxChar = null;for (var key in o) {if (max < o[key]) {max = o[key]; //max始終儲存次數最大的那個maxChar = key; //那么對應的字符就是當前的key}}console.log("最多的字符是" + maxChar);console.log("出現的次數是" + max);</script>網上找到的一種方法 其中 if (o[char]) 這里沒看懂。如果單純的輸出o[char]肯定為什么undefined執(zhí)行了else使他為1然后執(zhí)行 也只執(zhí)行一次。 為什么最后會輸出一個0的對象著實不明白。這個key vaule是這么加入到這個對象里的
查看完整描述

5 回答

?
紅顏莎娜

TA貢獻1842條經驗 獲得超13個贊

o[char]就是記錄每個元素出現的次數的。
例如第一個元素是a,走到這里 o['a']是undefined 那就會走else o['a'] = 1,記錄一次。
后面再有元素的a的話 o['a'] 就為真了 走if o['a']++,次數就會增加一次了!

查看完整回答
反對 回復 2019-04-14
?
jeck貓

TA貢獻1909條經驗 獲得超7個贊

要理解下js的對象,是{key,value}的關系的,如果key不存在, 則o.key就是undefined(if判斷里面就是false), 如果存在o.key,對應的數據就是value。 而o.key = 1的意思就是給o添加一個key,對應的值是1.

拿第一次說,o['z'],就是o.z 肯定是undefined,就到了else 分支,之后o.z就等于1。下次再碰到'z'字符串,就到了次數加1的分支


if (o[char]) { 

o[char]++; //次數加1

} else {

o[char] = 1; //若第一次出現,次數記為1

}


查看完整回答
反對 回復 2019-04-14
?
守著一只汪

TA貢獻1872條經驗 獲得超4個贊

var str = "zhaochucichuzuiduodezifu";

var strCounter = {};

var maxCount = 0;

var resC = '';

for (var i in str) {

    var c = str[i];

    strCounter[c] ? strCounter[c]++ : (strCounter[c] = 1);

    if (strCounter[c] > maxCount) {

        maxCount = strCounter[c];

        resC = c;

    }

}


console.log('strCount', strCounter);

console.log('resC', resC);


查看完整回答
反對 回復 2019-04-14
?
慕容3067478

TA貢獻1773條經驗 獲得超3個贊

//判斷一個字符串中出現次數最多的字符,并統(tǒng)計這個次數

        var str = 'asdsdddd';

        console.log(str)

        var obj = {};

        for(var i=0;i<str.length;i++){

            var strIndex = str.charAt(i);

            if(obj[strIndex]){

                obj[strIndex]++;

            }else{

                obj[strIndex] = 1;

            }

        }

        console.log(obj)

        var max = 0;

        for(var key in obj){

            if(max < obj[key]){

                max = obj[key]

            }

        }

        for(var key in obj){

            if(obj[key] == max){

                console.log('出現次數最多的是'+key);

                console.log('次數是'+max);

            }

        }


查看完整回答
反對 回復 2019-04-14
?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

function countMaxStr(str){

    var o = {}

    str.split('').forEach(item=>{

        if(item in o){

            o[item]++

        }

        else {

            o[item] = 1

        }

    })

    return sortObj(o)

}


function sortObj(obj){

    var arr = []

    for(var key in obj){

        arr.push({

            key:key,

            value:obj[key]

        })

    }

    arr.sort((a,b)=>{

        return a.value > b.value

    })

    return arr.pop()

}


console.log(countMaxStr("121313fefefrg"))


查看完整回答
反對 回復 2019-04-14
  • 5 回答
  • 0 關注
  • 1459 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號