기본 콘텐츠로 건너뛰기

라벨이 indexOf인 게시물 표시

배열에 포함 되어있지만, 존재 하지 않아.

 자바스크립트에는 값을 비교하는 방식이 여러 방식으로 할 수 있다는 것을 알 것이다.  뭐 작게 보면 ==, ===, Object.is 이런 것들이 있을 것이고, typeof, instanceof를 이용하는 등... 로직을 구성하여 비교하는 나열하기가 힘들 정도로 여러 방식이 있을 것이다.  혹시 indexOf를 사용 해본적이 있나? 배열과 문자열에서 기본적으로 제공하는 함수이며, 꽤나 친숙한 함수 일 것이다.  그렇다면 includes는 사용 해보았나? indexOf는 값의 위치를 알려주기 때문에, 꽤 불편 하다. 아래 같은 경우 말이다. const keyWord = 'hello' const helloWorld = 'hello world' if ( helloWorld . indexOf ( keyWord ) ) { console . log ( 'indexOf!' ) // 실행 되지 않음 . } if ( helloWorld . includes ( keyWord ) ) { console . log ( 'includes!' ) // 실행 됨 }  그래서 아마 값이 있는지 확인만 하는 경우 includes를 사용 하는 경우가 많을 것이다. 하지만 특정 위치가 필요한 경우 indexOf를 사용 할 것이다.  여기서, indexOf 와 includes가 같은 로직으로 값을 확인하는 것이라 착각한다면... 문제가 생길 여지가 생겨 버린다.  단적인 예로, 배열에는 존재 하지만, 배열에서 위치를 못 찾는 경우가 생기는 경우가 있다.  아래 코드를 꼭 실행 시켜보도록 하자. const arr = [ 1 , 2 , 3 , 4 , NaN ] if ( arr . includes ( NaN ) ) { console . log ( `NaN 이 ${ arr . indexOf ( NaN )} 에 있습니다 .` ) // NaN 이 -1 에 있습니다 . }  "NaN이 -1에 있습니다...