在JavaScript中,經(jīng)常會(huì)使用到字符串的相關(guān)操作,其中indexOf()方法是非常常用的一個(gè)方法。該方法用于查找一個(gè)字符串中某個(gè)子串第一次出現(xiàn)的位置,如果沒有找到,返回-1。下面我們來詳細(xì)了解一下這個(gè)方法。
具體用法:
str.indexOf(searchValue[, fromIndex])
該方法的參數(shù)分別為searchValue和fromIndex,其中,searchValue是要查找的字符串,fromIndex是指定從哪個(gè)位置開始查找。
舉個(gè)例子,有如下字符串:
const str = "Hello World!"
如果我們要查找其中的“World”這個(gè)子串第一次出現(xiàn)的位置,直接調(diào)用indexOf()方法即可:
const index = str.indexOf("World"); console.log(index); // 6
當(dāng)然,如果查找的子串不存在,indexOf()方法會(huì)返回-1:
const index = str.indexOf("JavaScript"); console.log(index); // -1
除了查找單個(gè)字符或者固定長度的子串以外,indexOf()方法還可以用于查找動(dòng)態(tài)變化的字符串,如下:
const searchStr = "Java"; const str1 = "I like Java very much"; const str2 = "I like JavaScript very much"; console.log(str1.indexOf(searchStr)); // 7 console.log(str2.indexOf(searchStr)); // -1
上例中,我們可以看到,當(dāng)字符串“Java”存在于str1中時(shí),其位置是7,而當(dāng)它存在于str2中時(shí),返回值為-1。
還有一個(gè)重要的參數(shù)fromIndex,表示從哪個(gè)位置開始查找。如果fromIndex省略,則默認(rèn)從0開始查找。如果fromIndex為負(fù)數(shù),則表示從字符串尾部開始查找。如下面代碼所示:
const str = "Hello World!"; console.log(str.indexOf("o", 6)); // 7 console.log(str.indexOf("o", -5)); // 8
上例中,第一行代碼從索引6的位置開始查找“o”,結(jié)果返回值為7;第二行代碼從索引-5的位置開始查找“o”,找到“o”的位置是字符“L”的位置,返回值為8。
需要注意的是,indexOf()方法區(qū)分大小寫。如果要忽略大小寫,可以將字符串全部轉(zhuǎn)換為小寫或大寫,再調(diào)用indexOf()方法。
最后,需要謹(jǐn)慎地使用indexOf()方法,因?yàn)樗鼤?huì)造成性能問題,尤其是在大量使用時(shí)。如果要對(duì)同一個(gè)字符串執(zhí)行多次查找操作,最好先將其轉(zhuǎn)化為一個(gè)數(shù)組或?qū)ο螅缓笤偈褂酶鞣N方法進(jìn)行操作和查找。