Tujuan indexOf adalah untuk mencari kedudukan perkataan dalam rentetan
lastIndexOf juga merupakan carian perkataan Perbezaan antara mereka ialah yang pertama bermula dari permulaan rentetan dan yang terakhir bermula dari penghujung rentetan.
Setelah perkataan yang ditentukan ditemui, nombor kedudukan semasa perkataan akan dikembalikan. Jika tidak dijumpai, kembalikan -1.
var str = "//www.stooges.com.my/test/index.aspx123/"; console.log(str.indexOf("/")); //0 console.log(str.lastIndexOf("/")); //39
Parameter 1 ialah perkataan yang perlu dicari, ia mestilah str, ungkapan biasa tidak akan berfungsi.
Juga ia menerima parameter ke-2. Jenis nombor, ini membolehkan kami menentukan julat carian.
var str = "//www.stooges.com.my/test/index.aspx123/"; console.log(str.indexOf("/", 0)); //0 默认情况是 0 console.log(str.lastIndexOf("/", str.length)); //39 默认情况是 str.length
Kawalan kedua-dua kaedah adalah dalam arah yang berbeza.
Anggapkan indexOf ditetapkan kepada 10, maka julat carian adalah dari 10 hingga str.length (akhir aksara)
Jika lastIndexOf ditetapkan kepada 10, julat carian ialah dari 10 hingga 0 (awalan)
Anda harus memberi perhatian kepada perkara ini.
ps: Jika ia ditetapkan kepada nombor negatif seperti -500, akan berlaku fenomena aneh yang saya sendiri tidak faham = = " ;
Kadang-kadang kita nak tentukan yang ke-n lepas tu kita boleh capai melalui kaedah di atas.
Contohnya:
String.prototype.myIndexOf = function (searchValue, startIndex) { var text = this; startIndex = startIndex || 1; var is_negative = startIndex < 0; var ipos = (is_negative) ? text.length + 1 : 0 - 1; var loopTime = Math.abs(startIndex); for (var i = 0; i < loopTime ; i++) { ipos = (is_negative) ? text.lastIndexOf(searchValue, ipos - 1) : text.indexOf(searchValue, ipos + 1); if (ipos == -1) break; } return ipos; }
var str = "//www.stooges.com.my/test/index.aspx123/"; console.log(str.myIndexOf("/", 3)); //20 console.log(str.myIndexOf("/", -2)); //25 倒数第2个的位置