LHJ

I'm a FE developer.

14-2. Array 오브젝트(ES5 기준) / index 처리 메소드

02 Dec 2020 » js_beginner

14-2. Array 오브젝트(ES5 기준) / index 처리 메소드

indexOf()

구분데이터(값)
data검색 대상
파라미터첫번째 파라미터: 검색할 값
두번째 파라미터: 검색 시작 인덱스, 디폴트 0
반환검색된 인덱스

  • 파라미터 값과 같은 엘리먼트의 인덱스 반환

    • 왼쪽에서 오른쪽으로 검색
    • 값이 같은 엘리먼트가 있으면 검색 종료

        var value = [1, 2, 5, 2, 5];
        console.log(value.indexOf(5)); // 2
      
      1. 배열의 왼쪽부터 5를 검색
      2. 2번 인덱스에 5가 있으므로 2를 반환
    • 데이터 타입까지 체크

        var value = [1, 2, 5, 2, 5];
        console.log(value.indexOf("5")); // -1
      
      1. 배열의 왼쪽부터 “5”를 검색
      2. 2번과 4번 인덱스에 5가 있지만 타입이 다름
      3. 같은 값이 없으면 -1을 반환합니다.

  • 두번째 파라미터의 인덱스부터 검색

      var value = [1, 2, 5, 2, 5];
      console.log(value.indexOf(5, 3)); // 4
    
    1. 3번 인덱스부터 5를 검색
    2. 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
    
    1. 두 번째 파라미터에 음수를 작성했을 때 검색 방법이 다릅니다.
    2. String 오브젝트는 0으로 간주하여 처음부터 처음부터 검색
      ABCBC에서 C가 2번 인덱스에 있으므로 2를 반환
    3. 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
      

음 잘 이해는 안가지만 강좌 내용은 다음과 같습니다.

  1. 왼쪽 -&ㅎㅅ; 오른쪽 : 같은 값이 나와도 그 다음을 검색합니다. 마지막 인덱스를 반환합니다.
  2. 그런데 last의 사전적 개념은 마지막
  3. 그런데 오른쪽에서 왼쪽으로 검색해야 효율적
  4. 즉, 오른쪽에서 왼쪽으로 검색한다는 표현이 더 맞음

사전적 개념이 마지막이라 왼쪽 -> 오른쪽 검색 - 마지막 나올때까지 - 이렇게 생각하기 쉽지만
사전적 개념 last 생각말고 오른쪽 -> 왼쪽 검색이라고 생각해.

이런뜻인가?.. 이 부분은 좀 뭔가 이해하기 난해..