Javascript

[Dseok의 코딩스터디] javascript / indexOf() Method / 자바스크립트 indexOf() 메소드 / 자바스크립트 indexOf() 메소드 활용 / Array.prototype.indexOf()

Dseok 2023. 7. 30. 22:21
반응형
SMALL

오늘은 Array에 있는 indexOf() 메소드에 대해서 알아보자.

indexOf()메소드는 String, 문자열에서도 사용을 할 수 있는 메소드이다.(MDN참고)

 

하지만 지금은 Array에 있는 indexOf()를 알아보자.

MDN 설명이다.

indexOf()
메서드는 배열에서 지정된 요소를 찾을 수 있는 첫 번째 인덱스를 반환하고 존재하지 않으면 -1을 반환합니다.

indexOf()는 엄격한 동등성 (=== 또는 triple-equals 연산자에서 사용하는 것과 같은 메서드)을 사용하여 검색 요소를 Array의 요소와 비교합니다.

쉽게 말하면

내가 검색해야할 배열(데이터)에 내가 원하는 원소(자료)가 있으면 그 원소(자료)가 처음 보여지는 순서를 값으로 내놓고, 없으면 -1을 내놓는다.

 

indexOf()의 문법을 보자.

arr.indexOf(searchElement[, fromIndex])

indexOf()는 2개의 인자를 받는다.

1. searchElement: 배열에서 찾고자 하는 원소(자료)를 말한다.

2. fromIndex

: 어디서부터 검색하기를 원하는지를 넣어주면 된다. 옵션이므로 넣어도되고 넣지 않아도 된다.

 

백문이불여일타.

예시 코드를 보자.

 

const array = [2, 9, 9];
array.indexOf(2);     // 0
array.indexOf(7);     // -1
array.indexOf(9, 2);  // 2
array.indexOf(2, -1); // -1
array.indexOf(2, -3); // 0

위 코드에서 보다시피 2는 첫번째에 있으니 0을 출력, 배열의 맨 처음에 있는 순서값은 0이다. 컴퓨터는 0부터 숫자를 센다.

array.indexOf(9, 2)에서는 9를 찾되 첫 번째 9는 필요 없으니 2번째 9의 위치를 내놔라. 라는 뜻이다.

 

 

하나씩 찾으니 답답하다.

내가 원하는 값의 모든 위치를 찾아줘라.

let indices = [];
const array = ['a', 'b', 'a', 'c', 'a', 'd'];
const element = 'a';
const idx = array.indexOf(element);
while (idx != -1) {
  indices.push(idx);
  idx = array.indexOf(element, idx + 1);
}
console.log(indices);
// [0, 2, 4]

이렇게 하면 내가 찾고자하는 원소(자료)의 위치 값을 반환해준다.

 

Array.prototype.indexOf()의 실제 사용할 수 있는 사용 예시들을 알아보자.

 

1. 중복 요소 확인 및 제거

2. 특정 값의 존재 여부 확인

3. 배열 안에서 특정 값의 모든 인덱스 확인

4. 특정 값의 첫 번째 등장 위치 확인

5. 특정 값의 마지막 등장 위치 확인

6. 특정 값의 등장 횟수 확인

7. 콜백 함수를 사용한 조건에 따른 검색

 

이정도의 실제 활용 예시들을 알아볼 수 있을 것 같다

이중에 중복 요소 확인 및 제거에 대한 예시를 알아보자.

 

const fruits = ['사과', '바나나', '오렌지', '사과', '포도', '바나나'];

function 이중요소제거함수(arr) {
  const 제거하고넣을배열 = [];
  for (const item of arr) {
    if (제거하고넣을배열.indexOf(item) === -1) {
      제거하고넣을배열.push(item);
    }
  }
  return 제거하고넣을배열;
}

const 제거됨 = 이중요소제거함수(fruits);
console.log(제거됨); // ['사과', '바나나', '오렌지', '포도']

 

indexOf는 단순한 값을 찾을 수 있다.

인자에 함수를 넣어서 사용하고 싶으면 findIndex()메소드를 사용해야한다.

 

다음에 알아보자.

 

반응형
LIST