Programming

[Javascript] IndexOf 배열 내에서 특정 위치 찾는 방법

개발자 염상진 2022. 5. 12. 21:59

 

 

 

 

indexOf()

 

배열 내에서 특정 요소의 위치값을 찾기 위해서는 indexOf() 메소드를 사용한다. 매개변수로는 요소 데이터를 받으며 배열 내에서 위치값을 반환한다.

물론 배열 뿐만 아니라 문자열에서도 indexOf() 메소드를 사용하면 특정 캐릭터를 찾을 수 있다.

const arr = [1,2,3,4,5]

const location = arr.indexOf(3);

console.log(location);
➜  Javascript node test.js
2

 

문자열 내 indexOf() 메소드 사용

const str = "hello world";

const str_loc = str.indexOf('lo ')


console.log(str_loc);
➜  Javascript node test.js
3

 

만약 찾는 요소가 배열내 존재하지 않으면 -1을 반환한다. 배열내에 특정 값 존재 유무를 체크하기 위해 includes() 메소드를 사용해도 되지만 indexOf()로도 확인할 수 있다. 

const arr = [1,2,3,4,5]

const location = arr.indexOf(7);

if(location < 0) console.log("값이 존재하지 않습니다.")

console.log(location);
➜  Javascript node test.js
값이 존재하지 않습니다.
-1

 

 

만약 배열내에 중복된 값이 존재한다면 N 번째 위치를 찾을 수 있다. 

indexOf('검색 데이터', N) => N번째 데이터의 위치 반환

 

const arr = [
	'korea',
	'usa',
	'japan',
	'usa',
	'china',
	'usa',
	'British',
	'usa',
]

const newArr = arr.indexOf('usa', 2)


console.log(newArr);
➜  Javascript node test.js
3

 

 

lastIndexOf()

 

배열 내에 중복된 데이터가 있을 경우 뒤에서 부터 찾아야 하는 경우에 사용한다. 매개변수는 indexOf()와 동일하게 찾고자 하는 요소 데이터를 전달받고, 배열 뒤에서 부터 인덱스를 서칭하여 최종 위치값을 반환한다.

const arr = [1,2,3,4,1,5]

const location = arr.lastIndexOf(1);


console.log(location);
➜  Javascript node test.js
4

 

toUpperCase() vs toLowerCase()

 

indexOf() 메소드는 기본적으로 대소문자를 구분한다. 따라서 문자열을 검색할 때는 배열 안의 요소를 찾기 위해서 스케일링을 따로 작업해줘야 한다.

const arr = [
	'korea',
	'usa',
	'japan',
	'china',
	'British'
]

const newArr = arr.indexOf('USA'.toLowerCase())


console.log(newArr);
➜  Javascript node test.js
1