배열에서 특정 값을 찾고 그 원소의 인덱스를 알고 싶다.
Array 객체의 indexOf
와 lastIndexOf
메서드를 사용하면 된다.
var animals = new Array("dog","cat","seal","elephant","walrus","lion");
alert(animals.indexOf("elephant")); //3 출력
indexOf
와 lastIndexOf
는 인수로 검색할 값을 받아서 배열의 모든 원소와 이 값을 비교한다. 그리고 동일한 값을 찾으면 배열 원소의 인덱스를 반환하고, 값을 찾지 못하면 -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을 제외한 모든 브라우저가 indexOf
와 lastIndexOf
를 지원한다. IE9부터는 indexOf
와 lastIndexOf
를 지원한다.
크로스 브라우저를 위해 IE8에서도 indexOf
와 lastIndexOf
를 사용하기 위해서는 아래 공개된 모질라 문서를 참고한다.
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