<strike id="cy2gs"><menu id="cy2gs"></menu></strike>
  • <del id="cy2gs"><dfn id="cy2gs"></dfn></del>
  • JavaScript 數(shù)組中的 indexOf 方法詳解

    2016-10-20    藍(lán)藍(lán)設(shè)計(jì)的小編

    如果您想訂閱本博客內(nèi)容,每天自動(dòng)發(fā)到您的郵箱中, 請(qǐng)點(diǎn)這里

     

    最近項(xiàng)目遇到一個(gè)小問(wèn)題代碼我會(huì)簡(jiǎn)化成小例子展示給大家。

    用心看到最后會(huì)有收獲哈,基礎(chǔ)扎實(shí)的童鞋可以直接跳到數(shù)組類(lèi)型使用。

    說(shuō)到 indexOf 大家并不陌生,判斷字符串是否包涵子字符串時(shí)特別常用(正則不熟練同學(xué)的利器)。

    String 類(lèi)型的使用

    溫習(xí)一下大家熟知的字符串用法,舉個(gè)例子

    let str = 'orange';
    
    str.indexOf('o'); //0 str.indexOf('n'); //3 str.indexOf('c'); //-1

    這里 0 和 3 分別是 o 和 n 在字符串中出現(xiàn)的位置。起始下標(biāo)是 0。而 -1 代表未匹配。

    曾經(jīng)有人問(wèn)我為什么偏偏是 -1 不是 null 或者 undefined。你去問(wèn)制定規(guī)則的人啊!一臉無(wú)奈。

    大家看到這里感覺(jué)沒(méi)什么亮點(diǎn)啊,別急接著再來(lái)一個(gè)例子

    let numStr = '2016';
    
    numStr.indexOf('2'); //0 numStr.indexOf(2); //0

    看到這里有個(gè)小點(diǎn)就是 indexOf 會(huì)做簡(jiǎn)單的類(lèi)型轉(zhuǎn)換,把數(shù)字轉(zhuǎn)換成字符串 '2' 然后再執(zhí)行。

    Number 類(lèi)型的使用

    大家可能會(huì)想 number 類(lèi)型有沒(méi)有 indexOf 方法因?yàn)闀?huì)做隱式轉(zhuǎn)換嘛!明確告訴大家沒(méi)有,上例子

    let num = 2016;
    
    num.indexOf(2); //Uncaught TypeError: num.indexOf is not a function

    非要對(duì) number 類(lèi)型使用 indexOf 方法嘞?那就轉(zhuǎn)換成字符串咯,接著上例來(lái)寫(xiě)

    //二逼青年的寫(xiě)法 num = '2016';
    num.indexOf(2); //0 //普通青年的寫(xiě)法 num.toString().indexOf(2); //0 //文藝青年的寫(xiě)法 ('' + num).indexOf(2); //0

    第一種寫(xiě)法簡(jiǎn)單直接,對(duì)于已知的較短的數(shù)字也不是不可行。但是 num 變量針對(duì)不同數(shù)據(jù)是變化的時(shí)候,怎么辦呢?

    第二種寫(xiě)法最為常用,但對(duì)比第三種寫(xiě)法長(zhǎng)了一點(diǎn)。哈哈,其實(shí)都可以,代碼潔癖的人喜歡第三種

    Array 類(lèi)型的使用

    大家提起精神,大boss來(lái)了。

    數(shù)組方法大家再熟悉不過(guò)了,卻忽略了數(shù)組有 indexOf 這個(gè)方法(我個(gè)人感覺(jué))。

    干說(shuō)不練瞎扯淡,遇到了什么問(wèn)題,注意點(diǎn)又在哪里?

    let arr = ['orange', '2016', '2016'];
    
    arr.indexOf('orange'); //0 arr.indexOf('o'); //-1 arr.indexOf('2016'); //1 arr.indexOf(2016); //-1

    這里沒(méi)把例子拆的那么細(xì),四個(gè)用例足以說(shuō)明問(wèn)題。

    • arr.indexOf(‘orange’) 輸出 0 因?yàn)?‘orange’ 是數(shù)組的第 0 個(gè)元素,匹配到并返回下標(biāo)。
    • arr.indexOf(‘o’) 輸出 -1 因?yàn)榇朔椒ú粫?huì)在每一個(gè)元素的基礎(chǔ)上再次執(zhí)行 indexOf 匹配。
    • arr.indexOf(’2016′) 輸出 1 因?yàn)榇朔椒◤念^匹配直到匹配到時(shí)返回第一個(gè)數(shù)組元素的下表,而不是返回全部匹配的下標(biāo)。
    • arr.indexOf(2016) 輸出 -1 注意:這里不會(huì)做隱式類(lèi)型轉(zhuǎn)換。

    既然坑已經(jīng)發(fā)現(xiàn)我們不妨刨根問(wèn)底。去MDN官網(wǎng)一看究竟。對(duì)此話題感興趣的朋友可以直接跳轉(zhuǎn)到 Array.prototype.indexOf()

    只想了解的朋友下面給大家官方的 Description。

    indexOf() compares searchElement to elements of the Array using strict equality (the same method used by the === or triple-equals operator).

    一目了然,這里用的是嚴(yán)格等于(===)。大家做類(lèi)似判斷的時(shí)候多留意。不要誤認(rèn)為數(shù)字會(huì)轉(zhuǎn)成字符串,同理字符串也不會(huì)轉(zhuǎn)換成數(shù)字。

    總結(jié)

    小知識(shí)點(diǎn)積累,不作為深入討論的話題,因此這里沒(méi)有解釋 indexOf() 的第二個(gè)參數(shù),相信大家都知道第二個(gè)參數(shù)的作用,不知道的可以看這里String.prototype.indexOf(),然后結(jié)合上面數(shù)組的鏈接也看一下第二個(gè)參數(shù)。

     

     

     藍(lán)藍(lán)設(shè)計(jì)www.skdbbs.com )是一家專(zhuān)注而深入的界面設(shè)計(jì)公司,為期望卓越的國(guó)內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 平面設(shè)計(jì)服務(wù) 

     

    日歷

    鏈接

    個(gè)人資料

    存檔

    主站蜘蛛池模板: 久久精品天天中文字幕人妻| 九九精品成人免费国产片| 国产成人精品一区二区秒拍| 久久精品无码一区二区三区免费 | 99精品国产一区二区| 国产麻豆精品久久一二三| 日韩精品无码免费视频| 国产精品白丝AV嫩草影院| 久久国产乱子伦精品免费强 | 亚洲级αV无码毛片久久精品| 精品人妻一区二区三区毛片| 精品久久久久久综合日本| 国产成人精品2021| 国精品无码一区二区三区左线| 亚洲精品乱码久久久久66| 人妻精品久久久久中文字幕| 精品少妇一区二区三区在线| 国产精品第一区第27页| 最新亚洲精品国自产在线观看| 国产精品青草久久久久婷婷| 国产精品视频一区二区三区无码| 亚洲AV永久无码精品水牛影视| 亚洲国产精品尤物YW在线观看| 欧美精品免费专区在线观看| 精品少妇一区二区三区在线 | AV无码精品一区二区三区| 久久精品毛片免费观看| 久久99精品久久久久久久不卡| 嫩草伊人久久精品少妇AV| 亚洲精品国产av成拍色拍| 伊人久久综合精品无码AV专区| 中文字幕一精品亚洲无线一区| 真实国产精品vr专区| 午夜欧美精品久久久久久久| 日韩精品人妻系列无码专区免费| 久久久久无码精品国产不卡| 久久久久人妻一区精品色 | 久久久久99精品成人片欧美| 久久精品九九亚洲精品| 国产99视频精品免视看7| 国产精品久久网|