함께 성장하는 프로독학러

배열과 문자열의 indexOf 메서드 본문

Programming/javascript

배열과 문자열의 indexOf 메서드

프로독학러 2018. 4. 9. 20:45

안녕하세요, 프로독학러 입니다.


오늘은 배열과 문자열에서 사용 가능한, 검색을 위한 메서드인 indexOf 메서드에 대해서 알아보도록 하겠습니다.


먼저, 표현식부터 살펴 보겠습니다.


arr/str.indexOf(searchElement/searchValue[, fromIndex])

메서드의 첫 번째 인자로는 검색할 대상이 들어옵니다.

(배열일 경우 검색할 엘리먼트, 문자열일 경우 검색할 문자)

그리고 생략 가능한 두 번째 인자는 검색을 시작할 index입니다.

만약 배열이라면 배열의 index값 (0 부터 시작해서 하나씩 증가)을 의미하며,

문자열이라면 문자열 각각의 문자 하나하나를 의미합니다. (마찬가지로 첫 번째 글자부터 0, 1, 2, 3 ...)


indexOf 메서드의 리턴값은 배열일 경우에 검색된 엘리먼트의 index값이 오고,

문자열일 경우에는 검색된 문자의 첫 글자의 index값 입니다.

(검색 결과가 없을 경우 -1이 리턴됩니다)


이해를 돕기위해 아래의 예제를 보겠습니다.


1
2
3
var arr = ['one''two''three'];
arr.indexOf('two'); // 1
arr.indexOf('two'2); //-1
cs


arr배열에서 'two'를 검색한 예제 입니다.

두 번째 줄의 메서드 실행에서는 fromIndex값을 생략했습니다. 즉, 배열의 전체에서 찾겠다는 의미이고, 리턴값은 'two' 의 index값인 1 입니다.

그러나 세 번째 줄의 실행에서는 fromIndex값으로 2를 주었습니다. 이는 arr배열안에서 'two'를 찾는데 index값이 2인 부분('three')부터 찾겠다는 의미입니다. 그 결과, 'three'이후의 'two'를 찾을 수 없으므로 -1이 리턴됩니다.


이번엔 문자열에서 indexOf 메서드를 사용한 예를 보겠습니다.


1
2
3
var str = 'My name is pro-self-studier.';
str.indexOf('self'); // 15
str.indexOf('self'16); // -1
cs


문자열 str은 'My name is pro-self-studier.' 입니다.

여기서 self라는 단어를 찾을 때, indexOf 메서드를 이용했습니다.

리턴값은 15가 나왔는데, 공백을 포함해 문자 하나하나를 0부터 각각 세면 15번째부터 위치하므로 15가 나왔습니다.

세 번째 줄의 indexOf 메서드는 문자열의 16번째 부터 검색하므로 'self' 가 온전히 검색되지 않기에 -1이 리턴됩니다.


주의해야 할 점은 indexOf 메서드는 대소문자를 구분한다는 것입니다. 


1
2
3
4
var str = 'My name is pro-Self-studier.';
str.indexOf('self'); // -1
str.indexOf('Self'); // 15
str.toLowerCase().indexOf('self'); //15
cs


만약 대소문자를 구분하지 않고 검색하려면 네 번째 줄과 같이 toLowerCase() 메서드를 이용해 모든 문자열을 소문자로 변환시킨뒤에 검색하면 됩니다.


여기까지 배열과 문자열에서 특정 값을 찾는 메서드인 indexOf 메서드에 대해 알아보았습니다.

감사합니다.


** 참고자료

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf


*다녀가셨다는 표시는 공감으로 부탁드릴게요! (로그인 하지 않으셔도 공감은 가능합니다 ㅎㅎ)


'Programming > javascript' 카테고리의 다른 글

배열의 원소를 제거하는, splice 메서드  (0) 2018.04.12
배열의 filter 메서드  (0) 2018.04.09
배열의 sort 메서드  (1) 2018.04.09
자바스크립트, this가 무엇이냐  (1) 2018.04.05
배열의 reduce 메서드  (0) 2018.04.05
Comments