Array.prototype.lastIndexOf()
BaselineWidely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Array
인스턴스의lastIndexOf()
메서드는 배열에서 특정 요소를 찾을 수 있는 마지막 인덱스를 반환하거나, 해당 요소가 없으면-1
을 반환합니다. 배열은fromIndex
에서 시작하여 역방향으로 검색됩니다.
시도해 보기
const animals = ["Dodo", "Tiger", "Penguin", "Dodo"];console.log(animals.lastIndexOf("Dodo"));// Expected output: 3console.log(animals.lastIndexOf("Tiger"));// Expected output: 1
구문
lastIndexOf(searchElement)lastIndexOf(searchElement, fromIndex)
매개변수
searchElement
배열에서 찾을 요소.
fromIndex
Optional역방향 검색을 시작하는 0부터 시작하는 인덱스로,정수로 변환됩니다.
- 음수 인덱스는 배열 끝에서부터 다시 계산됩니다. 만약
fromIndex < 0
이라면,fromIndex + array.length
가 사용됩니다. fromIndex < -array.length
인 경우, 배열을 검색하지 않고-1
을 반환합니다. 개념적으로 배열이 시작되기 전 존재하지 않는 위치에서 시작해 그곳에서부터 거꾸로 가는 것이라고 생각하면 됩니다. 도중에 배열 요소가 없으므로searchElement
를 찾을 수 없습니다.fromIndex >= array.length
또는fromIndex
를 생략하면,array.length - 1
이 사용되어 전체 배열을 검색하게 됩니다. 개념적으로 배열 끝 너머 존재하지 않는 위치에서 시작하고 그곳에서부터 거꾸로 가는 것이라고 생각하면 됩니다. 결국 배열의 실제 끝 위치에 도달하고, 이 지점에서 실제 배열 요소를 통해 역순 검색을 시작합니다.
- 음수 인덱스는 배열 끝에서부터 다시 계산됩니다. 만약
반환 값
배열에 있는searchElement
의 마지막 인덱스입니다. 찾을 수 없으면-1
입니다.
설명
예제
lastIndexOf() 사용하기
다음 예제에서는lastIndexOf()
를 사용하여 배열에서 값을 찾습니다.
const numbers = [2, 5, 9, 2];numbers.lastIndexOf(2); // 3numbers.lastIndexOf(7); // -1numbers.lastIndexOf(2, 3); // 3numbers.lastIndexOf(2, 2); // 0numbers.lastIndexOf(2, -2); // 0numbers.lastIndexOf(2, -1); // 3
NaN
을 찾기위해lastIndexOf()
을 사용할 수 없습니다.
const array = [NaN];array.lastIndexOf(NaN); // -1
요소의 모든 위치 찾기
다음 예제에서는lastIndexOf
를 사용하여 주어진 배열에 있는 요소의 모든 인덱스를 찾고, 발견된 요소를 다른 배열에 추가하기 위해push()
를 사용합니다.
const indices = [];const array = ["a", "b", "a", "c", "a", "d"];const element = "a";let idx = array.lastIndexOf(element);while (idx !== -1) { indices.push(idx); idx = idx > 0 ? array.lastIndexOf(element, idx - 1) : -1;}console.log(indices);// [4, 2, 0]
여기서는idx === 0
인 경우를 별도로 처리해야 합니다. 요소가 배열의 첫 번째 요소인 경우fromIndex
매개변수에 관계없이 항상 검색되기 때문입니다. 이는indexOf()
메서드와 다릅니다.
희소 배열에 lastIndexOf() 사용하기
배열의 빈 슬롯을 검색하기 위해lastIndexOf()
를 사용할 수 없습니다.
console.log([1, , 3].lastIndexOf(undefined)); // -1
배열이 아닌 객체에 lastIndexOf() 사용하기
lastIndexOf()
메서드는this
의length
속성을 읽은 다음 키가length
보다 작은 음이 아닌 정수인 각 속성에 접근합니다.
const arrayLike = { length: 3, 0: 2, 1: 3, 2: 2, 3: 5, // length가 3 이므로 lastIndexOf()에서 무시됩니다.};console.log(Array.prototype.lastIndexOf.call(arrayLike, 2));// 2console.log(Array.prototype.lastIndexOf.call(arrayLike, 5));// -1
명세서
Specification |
---|
ECMAScript® 2026 Language Specification # sec-array.prototype.lastindexof |