정의 및 사용 방법
배열에서 lastIndexOf() 함수는
주어진 요소가 배열에서 찾을 수 있는 마지막 인덱스를 반환합니다.
인수로 전달된 요소를 찾을 수 없다면 -1을 반환합니다.
이 함수의 가장 일반적이고 중요한 용도는 배열 내에서 특정 값이 마지막으로 나타나는 위치를 찾는 것입니다.
특히 배열에 같은 이름이 여러 번 등장할 때, 마지막으로 기록된 항목을 찾을 때 유용합니다.
이 함수는 대소문자를 구분합니다.
기본 예제
const colors = ["red", "green", "blue", "red"];
/*
* 주의하세요!
* 배열에서 인덱스는 0부터 시작합니다.
* 첫 번째 요소의 인덱스는 0이고, 두 번째 요소의 인덱스는 1입니다.
*/
// 배열 colors에서 요소 "red"를 배열에서 찾을 수 있는 마지막 인덱스를 반환합니다
const red = colors.lastIndexOf("red");
console.log(red); // 출력: 3;
// 배열 colors에서 인수로 전달된 요소 "yellow"를 찾을 수 없으므로 -1을 반환합니다.
const yellow = colors.lastIndexOf("yellow");
console.log(yellow); // 출력: -1;
참고하세요!
문자열에서는 문자열 lastIndexOf()가 같은 역할을 합니다.
참고하세요!
배열에서 indexOf() 함수는 인수로 전달된 배열의 요소를 찾아 그 요소가 첫 번째로 검색된(등장한) 인덱스를 반환합니다.
구문
arr.lastIndexOf(searchElement[, fromIndex])
arr은 lastIndexOf() 함수를 적용할 배열입니다.
매개변수
searchElement |
필수. 배열에서 찾을 요소입니다.
대소문자를 구분합니다. |
|---|---|
fromIndex |
옵션. 검색을 시작할 0 기반의 인덱스입니다.
|
반환 값
주어진 요소가 배열에서 찾을 수 있는 마지막 인덱스를 반환합니다.
인수로 전달된 요소를 찾을 수 없다면 -1을 반환합니다.
매개변수와 반환 값 예시
/*
* 인수로 전달된 요소가 배열에서 중복으로 있다면,
* 주어진 요소가 배열에서 찾을 수 있는 마지막 인덱스를 반환합니다.
*/
const colors = ["red", "green", "blue", "red"];
// 배열 colors에서 요소 "red"를 배열에서 찾을 수 있는 마지막 인덱스를 반환합니다.
const red = colors.lastIndexOf("red");
// 배열 colors에서 요소 "red"은 두 개가 있습니다.
// 인덱스 0과 3에 있습니다.
// 하지만, 배열에서 요소의 마지막 등장 위치의 인덱스인 3을 반환합니다.
console.log(red); // 출력: 3;
/*
* arr.lastIndexOf(searchElement[, fromIndex])
*
* 옵션(선택적)으로 사용하는 fromIndex가 음수 값일 경우
* 이 경우 배열의 끝에서부터 역으로 카운트한 인덱스를 검색 시작 위치로 삼습니다.
* 검색 방향은 항상 오른쪽에서 왼쪽이며, 검색 중 요소를 찾으면 즉시 반환하고 탐색을 중단합니다.
*/
const fruits = ["apple", "bannana", "orange", "mango"];
const index = fruits.lastIndexOf("mango", -2);
console.log(index); // 출력: -1;
// fromIndex 값이 -2입니다.
// 배열의 끝에서부터 역으로 카운트되기 때문에
// 끝에서 두 번째 요소인 "orange"부터 검색합니다.
// 그러나 여전히 오른쪽에서 왼쪽 방향으로 검색합니다.
// 찾고자 하는 요소인 "mango"는 "orange"의 오른쪽 첫 번째에 존재함으로,
// 검색 범위(인덱스 0, 1, 2)에 포함되지 않습니다.
// 인수로 전달된 요소를 찾을 수 없다는 의미의 -1을 반환합니다.
주의할 점
배열의 lastIndexOf() 함수로 NaN를 검색할 수 없습니다.
const arr = [1, 2, NaN, 4, 5];
console.log(arr.lastIndexOf(NaN)); // 출력: -1
배열의 lastIndexOf() 함수로 문자열을 검색할 때에는 대소문자를 구분합니다.
const colors = ["red", "green", "blue"];
const red = colors.lastIndexOf("Red");
// 대문자 "R"과 소문자 "r"을 구분합니다.
console.log(red); // 출력: -1;
활용 사례
배열에서 lastIndexOf() 함수에 관련된 활용 사례입니다.
특정 사용자 ID의 가장 최신(마지막) 활동 위치 찾기
/*
* 시나리오:
* 활동 기록이 사용자 ID 배열과 시간 배열로 나누어 저장되어 있습니다.
* "user_B"가 마지막으로 활동한 시간을 찾아 표시합니다.
*/
// 사용자 ID가 기록된 배열 (기준 배열)
const userIDs = ["user_A", "user_B", "user_A", "user_C", "user_B"];
// 각 사용자 활동 시간 배열 (같은 인덱스끼리 매칭)
const timestamps = [
"10:05:00",
"10:15:20",
"10:25:10",
"10:35:05",
"10:45:55" // user_B의 마지막 활동 시간
];
const targetID = "user_B";
// lastIndexOf()를 사용하여 마지막 활동 위치 찾기
const lastIndex = userIDs.lastIndexOf(targetID);
if (lastIndex !== -1) {
const lastActiveTime = timestamps[lastIndex];
console.log(`대상 ID: ${targetID}`); // 대상 ID: user_B
console.log(`마지막 활동 인덱스: ${lastIndex}`); // 마지막 활동 인덱스: 4
console.log(`가장 최근 활동 시간: ${lastActiveTime}`); // 가장 최근 활동 시간: 10:45:55
} else {
console.log(`${targetID}의 활동 기록을 찾을 수 없습니다.`);
}
이처럼 배열에서 lastIndexOf() 함수는 배열에 동일한 값이 여러 번 등장할 때, 가장 마지막에 기록된 위치를 기준으로 관련 데이터를 확인하거나 추출할 때 유용합니다.
호환성
| 메서드 |
데스크탑 Chrome
|
데스크탑데스크탑 Edge
|
데스크탑 Firefox
|
Safari
|
Node.js
|
|---|---|---|---|---|---|
lastIndexOf()
|
1 | 12 | 1.5 | 3 | 0.10 |
명세서
| 명세서 사양 | |
|---|---|
lastIndexOf()
|
ECMAScript® 2026 Language Specification #sec-array.prototype.lastindexof |
같이 보기
- 자바스크립트 배열 indexOf() 함수 – 배열에서 요소의 처음 등장 위치 찾기
- 자바스크립트 문자열 indexOf() 함수 – 특정 문자열의 첫 번째 등장 위치 찾기
- 자바스크립트 문자열 lastIndexOf() 함수 – 특정 문자열의 마지막 등장한 위치 찾기
- 자바스크립트 배열의 선언과 초기화
- 자바스크립트 배열 findIndex() 함수 – 콜백 함수로 조건에 맞는 요소 인덱스 찾기
- 자바스크립트 배열 findIndex() 함수 – 콜백 함수로 조건에 맞는 요소 인덱스 찾기
- 자바스크립트 배열 find() 함수 – 콜백 함수로 조건에 맞는 요소 찾기