indexOf의 목적은 문자열에서 단어의 위치를 찾는 것입니다
lastIndexOf도 단어 검색인데, 차이점은 전자는 문자열의 처음부터 시작하고 후자는 문자열의 끝에서 시작한다는 점입니다.
지정된 단어를 찾으면 해당 단어의 현재 위치 번호가 반환됩니다. 찾을 수 없으면 -1을 반환합니다.
var str = "//www.stooges.com.my/test/index.aspx123/"; console.log(str.indexOf("/")); //0 console.log(str.lastIndexOf("/")); //39
매개변수 1은 검색할 단어이며 반드시 str이어야 하며 정규식은 작동하지 않습니다.
두 번째 매개변수도 허용합니다. 숫자 유형을 사용하면 검색 범위를 지정할 수 있습니다.
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
두 가지 방법의 제어 방향이 다릅니다.
indexOf를 10으로 설정하면 검색 범위는 10부터 str.length(문자 끝)까지입니다
lastIndexOf를 10으로 설정하면 검색 범위는 10~0(prefix)이 됩니다
이 점을 주의하셔야 합니다.
ps: -500 등 음수로 설정하면 스스로도 이해할 수 없는 이상한 현상이 발생합니다 = = " ;
때때로 n번째 항목을 지정하고 싶을 경우 위의 방법을 통해 이를 달성할 수 있습니다.
예:
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个的位置