成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

JavaScript初應(yīng)用:找到數(shù)組中出現(xiàn)最多的字母并給出個(gè)數(shù)以及每一個(gè)所在的位置

darkerXi / 2605人閱讀

摘要:剛剛接觸一周的時(shí)間,熟悉了最基本的知識(shí),這是自己面對(duì)的第一個(gè)的邏輯性的代碼題目,自己嘗試了寫(xiě)了,結(jié)果還算可以,因?yàn)橛泻枚嘀R(shí)涉及到了后面的知識(shí),就有點(diǎn)吃力了。以下代碼總結(jié)于網(wǎng)上前輩給出的參考答案和結(jié)合了自己的理解和注釋?zhuān)?qǐng)多多指正。

剛剛接觸JS一周的時(shí)間,熟悉了最基本的js知識(shí),這是自己面對(duì)的第一個(gè)js的邏輯性的代碼題目,自己嘗試了寫(xiě)了,結(jié)果還算可以,因?yàn)橛泻枚嘀R(shí)涉及到了后面的dom知識(shí),就有點(diǎn)吃力了。以下代碼總結(jié)于網(wǎng)上前輩給出的參考答案和結(jié)合了自己的理解和注釋?zhuān)?qǐng)多多指正。

html代碼:


    

找到數(shù)組中出現(xiàn)最多的字母并給出個(gè)數(shù)以及每一個(gè)所在的位置

出現(xiàn)次數(shù)最多的字符:

出現(xiàn)次數(shù)最多的字符出現(xiàn)的次數(shù):

出現(xiàn)次數(shù)最多的字符的索引:

js部分:

function Maxchar(str) { //定義一個(gè)參數(shù),代表我們傳入一個(gè)數(shù)組或者字符串(字符串本身來(lái)說(shuō)也是一個(gè)數(shù)組)
    this.str = str || "";
    this.maxCharMeta = {}; //一個(gè)存儲(chǔ)提取信息的對(duì)象
}
// class_name.prototype.method_name = function(first_argument) {
//     // body...
// };
Maxchar.prototype.parser = function() { //定義一個(gè)解析函數(shù),掛在原型上,所有的實(shí)例都可以使用
    var str = this.str;
    /*
    objChar= {
        a:{
            char:"a",
            num:3,
            indexs:[2,4,6]
        },
        b:{
            char:"b",
            num:1,
            indexs:[1]
        }
    }
     */
    var objChar = {}, //存儲(chǔ)提取的信息
        maxCounter = 0;
    for (var i = 0; i < str.length; i++) { //遍歷以后,obj里面就會(huì)包含輸入字符數(shù)組的每個(gè)字符的信息了。
        if (objChar[str[i]]) { //若已存在,更新objChar里對(duì)應(yīng)身str[i]的屬性值
            objChar[str[i]].num += 1;
            objChar[str[i]].indexs.push(i);
        } else { //若不存在,則代表obj還沒(méi)有存在字符為str[i]的對(duì)象
            //定義一個(gè)臨時(shí)對(duì)象
            var metaChar = {
                char: str[i],
                num: 1,
                indexs: [i] //第一次出現(xiàn),該字符的索引數(shù)組里面只有一個(gè)元素,即當(dāng)前的i
            }
            objChar[str[i]] = metaChar; //將臨時(shí)對(duì)象 賦給obj
        }
        // 為了找出最多出現(xiàn)次數(shù)的信息,且不再重復(fù)定義遍歷,就在此for循環(huán)中定義實(shí)現(xiàn)
        if (maxCounter < objChar[str[i]].num) { //若最大次數(shù)小于當(dāng)前str[i]的num值,就更新
            this.maxCharMeta = objChar[str[i]];
            maxCounter = objChar[str[i]].num;
        }
    }
    return this; //實(shí)現(xiàn)鏈?zhǔn)降恼{(diào)用
}

// 輸出
Maxchar.prototype.maxCharInfo = function() {
    return this.maxCharMeta;
}

// 視圖處理
// 定義對(duì)象
var maxCharOut = {
    inputStr: null, //代表獲取的輸入值
    parsedObj: null, //代表解析完成的對(duì)象
    init: function() { //執(zhí)行
        this.getStrInfo(); //獲取信息
        // this.parser(); //位置放錯(cuò)了:在頁(yè)面一刷新的時(shí)候,還沒(méi)有獲取到值,當(dāng)鼠標(biāo)點(diǎn)擊以后,才獲取到值,開(kāi)始解析

    },
    getStrInfo: function() { //從界面上獲取,利用DOM元素
        var inputStr = document.getElementById("inputStr");
        var calculateBtn = document.getElementById("calculateBtn");

        calculateBtn.onclick = function() { //給button綁定點(diǎn)擊事件
            maxCharOut.inputStr = inputStr.value; //在點(diǎn)擊的時(shí)候獲取值
            maxCharOut.parser(); //當(dāng)鼠標(biāo)點(diǎn)擊以后,才獲取到值,開(kāi)始解析
            maxCharOut.charView(); // 點(diǎn)擊時(shí),調(diào)用結(jié)果輸出函數(shù),即可以頁(yè)面顯示結(jié)果
        }
    },
    // 解析/計(jì)算
    parser: function() {
        // var charMeta =new Maxchar(this.inputStr)  //傳入的是一個(gè)輸入字符(即輸入框輸入的值)
        // var charMeta =new Maxchar(this.inputStr).parser() //調(diào)用 
        // var charMeta =new Maxchar(this.inputStr).parser().maxCharInfo();//輸出
        this.parsedObj = new Maxchar(this.inputStr).parser().maxCharInfo();
    },
    // 輸出,放到頁(yè)面上顯示
    charView: function() { //顯示的三個(gè)位置,利用DOM元素
        var maxChar = document.getElementById("maxChar");
        var maxCounter = document.getElementById("maxCounter");
        var strIndex = document.getElementById("strIndex");

        //賦值前先進(jìn)行判斷,parsedObj是否存在,不存在代表解析還未完成
        if (this.parsedObj) {
            maxChar.innerHTML = this.parsedObj.char;
            maxCounter.innerHTML = this.parsedObj.num;
            strIndex.innerHTML = this.parsedObj.indexs.join(","); //關(guān)于每個(gè)字符的索引數(shù)組,不能直接將數(shù)組輸出,先將其變成字符串
        }
    }
};
// 立即執(zhí)行函數(shù)
(function() {
    maxCharOut.init();
})();

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/90903.html

相關(guān)文章

  • JavaScript應(yīng)用找到數(shù)組出現(xiàn)字母給出個(gè)數(shù)以及一個(gè)所在位置

    摘要:剛剛接觸一周的時(shí)間,熟悉了最基本的知識(shí),這是自己面對(duì)的第一個(gè)的邏輯性的代碼題目,自己嘗試了寫(xiě)了,結(jié)果還算可以,因?yàn)橛泻枚嘀R(shí)涉及到了后面的知識(shí),就有點(diǎn)吃力了。以下代碼總結(jié)于網(wǎng)上前輩給出的參考答案和結(jié)合了自己的理解和注釋?zhuān)?qǐng)多多指正。 剛剛接觸JS一周的時(shí)間,熟悉了最基本的js知識(shí),這是自己面對(duì)的第一個(gè)js的邏輯性的代碼題目,自己嘗試了寫(xiě)了,結(jié)果還算可以,因?yàn)橛泻枚嘀R(shí)涉及到了后面的do...

    Zhuxy 評(píng)論0 收藏0
  • 文字檢測(cè)識(shí)別系統(tǒng)好用嗎?都針對(duì)什么進(jìn)行識(shí)別?

    摘要:神經(jīng)網(wǎng)絡(luò)以上驗(yàn)證碼識(shí)別都依賴(lài)于字符切分,切分的好壞幾乎直接決定識(shí)別的準(zhǔn)確程度。目前驗(yàn)證碼識(shí)別最先進(jìn)的是谷歌在識(shí)別街景圖像中門(mén)牌號(hào)碼中使用的一套的算法。 最近在一個(gè)爬蟲(chóng)項(xiàng)目中遇到了驗(yàn)證碼,需要機(jī)器自動(dòng)識(shí)別繞過(guò)。剛好與題主的問(wèn)題類(lèi)似,在這里做一些分享。 在網(wǎng)上調(diào)研了資料和文獻(xiàn)后,分別采用OCR識(shí)別和模板庫(kù)匹配方法對(duì)不同類(lèi)型驗(yàn)證碼進(jìn)行了識(shí)別。主要過(guò)程可以分解為三個(gè)步驟:1.圖片清理,2.字符...

    wanglu1209 評(píng)論0 收藏0
  • 如何識(shí)別圖片驗(yàn)證碼?

    摘要:圖片驗(yàn)證碼是目前最常用的一種。神經(jīng)網(wǎng)絡(luò)以上驗(yàn)證碼識(shí)別都依賴(lài)于字符切分,切分的好壞幾乎直接決定識(shí)別的準(zhǔn)確程度。目前驗(yàn)證碼識(shí)別最先進(jìn)的是谷歌在識(shí)別街景圖像中門(mén)牌號(hào)碼中使用的一套的算法。 全自動(dòng)區(qū)分計(jì)算機(jī)和人類(lèi)的圖靈測(cè)試(Completely Automated Public Turing test to tell Computers and Humans Apart,簡(jiǎn)稱(chēng)CAPTCHA),...

    y1chuan 評(píng)論0 收藏0
  • 常見(jiàn)大數(shù)據(jù)和空間面試題

    摘要:答案使用,申請(qǐng)一個(gè)長(zhǎng)度為類(lèi)型的,每個(gè)位置只表示或,該數(shù)組占用空間約。遍歷億個(gè)數(shù),當(dāng)前數(shù)為,落在區(qū)間,對(duì)應(yīng)。 過(guò)濾100億黑名單 題目 假設(shè)有100億個(gè)URL的黑名單,每個(gè)URL最多占用64B,設(shè)計(jì)一個(gè)過(guò)濾系統(tǒng),判斷某條URL是否在黑名單里。 要求 不高于萬(wàn)分之一的判斷失誤率;額外內(nèi)存不超過(guò)30GB 答案 100億個(gè)64B的URL需要640GB的內(nèi)存,顯然直接存哈希表不合理??紤]布隆過(guò)濾...

    Hydrogen 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<