14-2. Array 오브젝트(ES5 기준) / index 처리 메소드
indexOf()
구분 | 데이터(값) |
---|---|
data | 검색 대상 |
파라미터 | 첫번째 파라미터: 검색할 값 두번째 파라미터: 검색 시작 인덱스, 디폴트 0 |
반환 | 검색된 인덱스 |
파라미터 값과 같은 엘리먼트의 인덱스 반환
- 왼쪽에서 오른쪽으로 검색
값이 같은 엘리먼트가 있으면 검색 종료
var value = [1, 2, 5, 2, 5]; console.log(value.indexOf(5)); // 2
- 배열의 왼쪽부터 5를 검색
- 2번 인덱스에 5가 있으므로 2를 반환
데이터 타입까지 체크
var value = [1, 2, 5, 2, 5]; console.log(value.indexOf("5")); // -1
- 배열의 왼쪽부터 “5”를 검색
- 2번과 4번 인덱스에 5가 있지만 타입이 다름
- 같은 값이 없으면
-1
을 반환합니다.
두번째 파라미터의 인덱스부터 검색
var value = [1, 2, 5, 2, 5]; console.log(value.indexOf(5, 3)); // 4
- 3번 인덱스부터 5를 검색
- 2번 인덱스에 5가 있지만 3번 인덱스부터 검색하므로 4가 반환됩니다.
String과 Array의 indexOf() 차이
console.log("ABCBC".indexOf("C", -2)); // 2 var list = ["A", "B", "C", "B", "C"]; console.log(list.indexOf("C", -2)); // 4
- 두 번째 파라미터에 음수를 작성했을 때 검색 방법이 다릅니다.
- String 오브젝트는 0으로 간주하여 처음부터 처음부터 검색
ABCBC에서 C가 2번 인덱스에 있으므로 2를 반환 - Array 오브젝트는 음수에 length를 더해 시작 인덱스로 사용
-2 + length(5) = 3
2번 인덱스에 C가 있지만 4번 인덱스를 반환
lastIndexOf()
구분 | 데이터(값) |
---|---|
data | 검색 대상 |
파라미터 | 첫번째 파라미터: 검색할 값 두번째 파라미터: 검색 시작 인덱스opt |
반환 | 검색된 인덱스 |
파라미터 값과 같은 엘리먼트의
- 마지막 인덱스 반환
다른 처리 방법은 indexOf()와 같음
var value = [1, 2, 5, 2, 5]; console.log(value.lastIndexOf(5)); // 4
음 잘 이해는 안가지만 강좌 내용은 다음과 같습니다.
- 왼쪽 -&ㅎㅅ; 오른쪽 : 같은 값이 나와도 그 다음을 검색합니다. 마지막 인덱스를 반환합니다.
- 그런데 last의 사전적 개념은 마지막
- 그런데 오른쪽에서 왼쪽으로 검색해야 효율적
- 즉, 오른쪽에서 왼쪽으로 검색한다는 표현이 더 맞음
사전적 개념이 마지막이라 왼쪽 -> 오른쪽 검색 - 마지막 나올때까지 - 이렇게 생각하기 쉽지만
사전적 개념 last 생각말고 오른쪽 -> 왼쪽 검색이라고 생각해.
이런뜻인가?.. 이 부분은 좀 뭔가 이해하기 난해..