JavaScript에서 중복 제거 기능을 구현하기 위해 includes 메소드를 사용했다.

 

1. includes 메소드 간단 설명

 => [] 배열 안에 특정 요소가 존재하는지의 여부 true or false로 반환하는 메소드

예시)

var arr = [];     //arr 라는 이름의 배열 선언

arr.push('a');   //배열에 'a' 삽입

arr.includes('a' )     //true 반환

arr.includes('b )     //false 반환

 

2. 문제 발생

그런데 위 메소드가 Chrome에서는 잘 작동했는데,

IE(인터넷 익스플로러) 에서는 작동하지 않아 디버거 창을 보니 다음과 같은 에러가 발생했다.

 

<SCRIPT438: 개체가 'includes' 속성이나 메서드를 지원하지 않습니다.>

 

검색을 해보니, includes 메소드는 IE에서는 지원하지 않는단다.

 

3. 해결 방법

그래서 Chrome과 IE 에서 동시에 동작하는 메소드로 대체를 했다.

includes('요소') => indexOf('요소') != -1

 

indexOf는 배열 내 요소의 index를 리턴하는데, 해당 값이 없을 경우 -1를 리턴한다.

이를 이용하여, indexOf('요소') != -1 이와 같이 사용하면 includes와 동일한 로직으로 동작한다.

 

그래서 코드를 다음과 같이 수정했다.

 

As - Is
To - Be

이후, IE에서 정상 작동한다.

 

끝.

+ Recent posts