1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        用最簡(jiǎn)潔代碼實(shí)現(xiàn) indexOf 方法

        共 3022字,需瀏覽 7分鐘

         ·

        2021-03-31 10:31

        面試官也在看的前端面試資料

        indexOf 有兩種:

        String.prototype.indexOf()

        返回從 fromIndex 處開(kāi)始搜索第一次出現(xiàn)的指定值的索引,如果未找到,返回 -1

        str.indexOf(searchValue [, fromIndex])
        // fromIndex 默認(rèn)值為 0

        Array.prototype.indexOf()

        返回在數(shù)組中可以找到一個(gè)給定元素的第一個(gè)索引,如果不存在,則返回 -1

        arr.indexOf(searchElement[, fromIndex])

        解答

        String.prototype.indexOf()

        解題思路:正則,字符串匹配

        function sIndexOf(str, searchStr, fromIndex = 0){
            var regex = new RegExp(`${searchStr}`'ig')
            regex.lastIndex = fromIndex
            var result = regex.exec(str)
            return result ? result.index : -1
        }

        // 測(cè)試
        var paragraph = 'The quick brown fox jumps over the lazy dog. If the dog barked, was it really lazy?'
        var searchTerm = 'dog'
        // 測(cè)試一:不設(shè)置 fromIndex
        console.log(sIndexOf(paragraph, searchTerm))
        // 40
        console.log(paragraph.indexOf(searchTerm));
        // 40
        // 測(cè)試二:設(shè)置 fromIndex
        console.log(sIndexOf(paragraph, searchTerm, 41))
        // 52
        console.log(paragraph.indexOf(searchTerm, 41));
        // 52

        測(cè)試成功

        Array.prototype.indexOf()

        解題思路:遍歷匹配

        function aIndexOf(arr, elem, fromIndex = 0){
            if(!elem) return -1
            for(let i = fromIndex; i < arr.length; i++) {
                if(arr[i] === elem) return i
            }
            return -1
        }

        // 測(cè)試
        var beasts = ['ant''bison''camel''duck''bison']
        // 測(cè)試一:不設(shè)置 fromIndex
        console.log(aIndexOf(beasts, 'bison'))
        // 1
        console.log(beasts.indexOf('bison'))
        // 1
        // 測(cè)試二:設(shè)置 fromIndex
        console.log(aIndexOf(beasts, 'bison'2))
        // 4
        console.log(beasts.indexOf('bison'2))
        // 4

        測(cè)試成功

        總結(jié)一下
        function indexOf(items, item, fromIndex = 0{
            let isArray = Array.isArray(items);
            let isString = Object.prototype.toString.call(items) == '[object String]';
            if (!isArray && !isString) throw new SyntaxError();
            if(isArray) return sIndexOf(items, item, fromIndex)
            else return aIndexOf(items, item, fromIndex)
        }

        你也可以嘗試使用遍歷匹配法解決 sIndexOf 問(wèn)題(正則更簡(jiǎn)潔),這里不做介紹(和 aIndexOf 差不多的套路,不同的是,String 類型可以一次匹配多個(gè)字符)

        來(lái)源:https://github.com/sisterAn/JavaScript-Algorithms

        最后

        歡迎關(guān)注【前端瓶子君】??ヽ(°▽°)ノ?
        回復(fù)「算法」,加入前端算法源碼編程群,每日一刷(工作日),每題瓶子君都會(huì)很認(rèn)真的解答喲!
        回復(fù)「交流」,吹吹水、聊聊技術(shù)、吐吐槽!
        回復(fù)「閱讀」,每日刷刷高質(zhì)量好文!
        如果這篇文章對(duì)你有幫助,在看」是最大的支持
        》》面試官也在看的算法資料《《
        “在看和轉(zhuǎn)發(fā)”就是最大的支持
        瀏覽 76
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            公交车被cao到合不拢腿漫画0 | 美女用手扒开自己下面 | 免费看黄色一级操逼视屏 | 亚洲人成人片77777 | 天海翼一区二区三区 | 摸进女同桌的小内裤狂摸里 | 中国美女一级毛片 | 国产又黄又爽在线 | 日本AAA片免费观看 | omega高潮h跪趴扩张abo |