Javascript Cookbook

배열 탐색하기

문제

배열에서 특정 값을 찾고 그 원소의 인덱스를 알고 싶다.

해결

Array 객체의 indexOflastIndexOf 메서드를 사용하면 된다.

var animals = new Array("dog","cat","seal","elephant","walrus","lion");

alert(animals.indexOf("elephant"));     //3 출력

설명

indexOflastIndexOf는 인수로 검색할 값을 받아서 배열의 모든 원소와 이 값을 비교한다. 그리고 동일한 값을 찾으면 배열 원소의 인덱스를 반환하고, 값을 찾지 못하면 -1을 반환한다.

indexOf 메서드는 가장 처음에 찾은 값의 인덱스를 반환하고, lastIndexOf는 가장 마지막에 찾은 값의 인덱스를 반환한다.

두 메서드는 두번째 인수로 검색을 시작할 위치를 받을 수 있다.

var animals = new Array("dog","cat","seal","walrus","lion","cat");

alert(animals.indexOf("cat", 2));       //5 출력
alert(animals.lastIndexOf("cat", 4));   //1 출력

현재 IE8을 제외한 모든 브라우저가 indexOflastIndexOf를 지원한다. IE9부터는 indexOflastIndexOf를 지원한다.

크로스 브라우저를 위해 IE8에서도 indexOflastIndexOf를 사용하기 위해서는 아래 공개된 모질라 문서를 참고한다.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf