Javascript 에서 array 중복을 제거하는 방법
다음과 같이 크게 4가지 방법이 존재한다.
- Set 함수를 이용
- lodash 라이브러리를 이용
- filter, indexOf를 이용
- reduce를 이용
1. Set를 이용
다음과 같은 중복된 데이터가 존재할때
const array = ['a' , 1, 2, 'a' , 'a', 3];
const result = [...new Set(array)]
- Set은 자료구조가 unique한 값만 저장하는 객체이기때문에
- Set 의 생성자에 해당 배열을 넘기고, Set 객체를 구조분해할당(…)를 통해서 새로운 배열에 담았다.
2. lodash 라이브러리 이용방법
# lodash 이용
const result = [_.unique(array)]
3. filter와 indexOf를 이용한 방법
const result = array.filter((item, index) => array.indexOf(item) === index);
- filter
- 첫번째 인자는 해당 item
- 두번째 인자는 해당 iterator의 index값
- indexOf(item) 은 item의 첫번째 인덱스를 리턴합니다.
- 해당 item의 첫번째 index 와 현재 인덱스가 같은 경우만 리턴합니다.
4. reduce를 이용한 방법
const result = array.reduce((prev, item) => prev.includes(item) ? prev : [...prev, item], []);
- reducer 함수
- prev: 이전까지 만들어진 데이터
- item: 현재의 item값
- 초기값: 빈배열
- prev.includes(item) 조건을 통해서, 이전까지 만들어진 prev에 현재의 item이 있다면 → prev를 리턴
- 없다면 […prev, item] 새로운 item을 추가합니다.
- 그렇게해서 반복!
5. 결론
- 근데 속도가 Set를 이용한게 가장 빠르다고 한다! Set를 이용하자!
- filter랑 reduce는 매번 iteration을 돌면서 판단을 하기 때문이지 않을까?
📚 Related Posts
- JavaScript Promise 기본부터 고급 활용까지
- JavaScript의 Reduce 메서드 이해하기
- JavaScript에서 공백 제거하는 방법(trim, 정규식)
- Javascript replace 예제
- Javascript type conversion(형변환)
- JavaScript setTimeout: 웹 개발에서의 시간 지연
- Javascript queryselector 사용예제
- Javascript foreach 사용예제
- Javascript map 사용방법
- Javascript array sort(배열 정렬)
- Promise.all과 Promise.race의 차이점
- lodash 사용예제 (map, filter, reduce, sortBy)
- Javascript 에서 array 중복을 제거하는 방법