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

資訊專欄INFORMATION COLUMN

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

Zhuxy / 963人閱讀

摘要:剛剛接觸一周的時間,熟悉了最基本的知識,這是自己面對的第一個的邏輯性的代碼題目,自己嘗試了寫了,結(jié)果還算可以,因為有好多知識涉及到了后面的知識,就有點吃力了。以下代碼總結(jié)于網(wǎng)上前輩給出的參考答案和結(jié)合了自己的理解和注釋,請多多指正。

剛剛接觸JS一周的時間,熟悉了最基本的js知識,這是自己面對的第一個js的邏輯性的代碼題目,自己嘗試了寫了,結(jié)果還算可以,因為有好多知識涉及到了后面的dom知識,就有點吃力了。以下代碼總結(jié)于網(wǎng)上前輩給出的參考答案和結(jié)合了自己的理解和注釋,請多多指正。

html代碼:


    

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

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

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

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

js部分:

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

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

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

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

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

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

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

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

相關(guān)文章

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

    摘要:剛剛接觸一周的時間,熟悉了最基本的知識,這是自己面對的第一個的邏輯性的代碼題目,自己嘗試了寫了,結(jié)果還算可以,因為有好多知識涉及到了后面的知識,就有點吃力了。以下代碼總結(jié)于網(wǎng)上前輩給出的參考答案和結(jié)合了自己的理解和注釋,請多多指正。 剛剛接觸JS一周的時間,熟悉了最基本的js知識,這是自己面對的第一個js的邏輯性的代碼題目,自己嘗試了寫了,結(jié)果還算可以,因為有好多知識涉及到了后面的do...

    darkerXi 評論0 收藏0
  • 文字檢測識別系統(tǒng)好用嗎?都針對什么進行識別?

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

    wanglu1209 評論0 收藏0
  • 如何識別圖片驗證碼?

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

    y1chuan 評論0 收藏0
  • 常見大數(shù)據(jù)和空間面試題

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

    Hydrogen 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<