KassyLog

배열에서 중복 제거 본문

javascript

배열에서 중복 제거

Kassy_kim 2023. 2. 6. 18:04

1. Set를 이용하여 중복 제거
2. filter()를 이용하여 중복 제거

1. Set

 

Set - JavaScript | MDN

Set 객체는 자료형에 관계 없이 원시 값과 객체 참조 모두 유일한 값을 저장할 수 있습니다.

developer.mozilla.org

Set은 중복이 허용되지 않는 객체이다. 안에 이미 같은 값이 존재한다면 추가되지 않는다. 그래서 중복값을 허용하지 않아야 한다면 Set을 이용하면 된다.

 

아래와 같은 방식으로 Set을 만든다. 값은 배열값이 들어가면 된다.

let x = new Set();
let arr = [0, 1, 2, 3, 0]
console.log([...new Set(arr)])   // [0, 1, 2, 3]

 

2. fliter

filter를 활용한 중복제거는 indexOf 메소드와 함께 사용하는데 이때 indexOf란 배열 안에서 찾고 있는 값의 최초 인덱스를 반환한다.

 

Array.prototype.filter() - JavaScript | MDN

filter() 메서드는 주어진 함수의 테스트를 통과하는 모든 요소를 모아 새로운 배열로 반환합니다.

developer.mozilla.org

arr.filter(callback(element[, index[, array]])[, thisArg])
⏺ callback : 각 요소를 시험할 함수. true를 반환하면 요소를 유지하고, false를 반환하면 버린다.
다음 세 가지 매개변수를 받는다.
⏺ element :
처리할 현재 요소
⏺ index (optional) :
처리할 현재 요소의 인덱스
⏺ array (optional) :
filter를 호출할 배열
⏺ thisArg (optional) :
callback을 실행할 때 this로 사용하는 값

 

이 때 index에서 사용할 처리할 현재 요소의 인덱스를 indexOf 메소드를 활용해서 알아낼 수 있다.

 

String.prototype.indexOf() - JavaScript | MDN

indexOf() 메서드는 호출한 String 객체에서 주어진 값과 일치하는 첫 번째 인덱스를 반환합니다. 일치하는 값이 없으면 -1을 반환합니다.

developer.mozilla.org

let arr = [0, 1, 2, 3, 0]
let filter = arr.filter((e,i)=>arr.indexOf(e) == i);
console.log(filter); //[0, 1, 2, 3]

 

 

 

 

*응용 문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr