Javascript

배열과 문자열에서 중복값 제거할 수 있는 방법들

John' 2023. 11. 20. 21:53

인간은 망각의 동물이다. 특정한 행동이나 생각을 자주 하지 않으면 우리 뇌 속에서는 신경의 가지치기 현상이 일어난다고 한다. 우리가 어떤 생각, 기분, 행동을 수행하지 않으면 뇌는 그와 연관된 뉴런들을 발화시키지 않는데, 그 결과 그러한 생각, 기분, 행동이 점점 약해지다가 결국 시들어버리고 잊게 되는 것을 신경 가지치기라고 한다. 그렇기 때문에 우리는 초등학교 시절처럼 리코더를 연주할 수 없는거고, 곡면의 부피를 구하는 적분 공식이나 근의 공식등에 대해 더는 기억하지 못하는 것이다. 쉽건, 어렵건 지금 나는 무조건 많이 생각하고 자꾸 써보고 사용해보는 것 밖에 방도가 없다 생각한다.

 

 

JavaScript에서 배열과 문자열에서 중복값을 제거하는 여러 가지 방법이 있는데, 아래는 알고리즘 풀이를 하면서 알게된 내용을 정리해보았다.

 

 

배열에서 중복값 제거하기


1. Set 사용

const array = [1, 2, 3, 4, 3, 2, 1];
const uniqueArray = [...new Set(array)];
console.log(uniqueArray);

 

 

2. filter 및 indexOf 사용

const array = [1, 2, 3, 4, 3, 2, 1];
const uniqueArray = array.filter((value, index, self) => self.indexOf(value) === index);
console.log(uniqueArray);



3. reduce 사용

const array = [1, 2, 3, 4, 3, 2, 1];
const uniqueArray = array.reduce((accumulator, currentValue) => {
  if (!accumulator.includes(currentValue)) {
    accumulator.push(currentValue);
  }
  return accumulator;
}, []);
console.log(uniqueArray);



 

문자열에서 중복값 제거하기

 

1. Set 및 Array.from 사용

const str = 'aabbc';
const uniqueStr = Array.from(new Set(str)).join('');
console.log(uniqueStr);


2. indexOf 및 반복문 사용

const str = 'aabbc';
let uniqueStr = '';
for (let char of str) {
  if (uniqueStr.indexOf(char) === -1) {
    uniqueStr += char;
  }
}
console.log(uniqueStr);

 

 

이러한 방법 중 어떤 것을 선택할지는 상황에 따라 다를 수 있는데, 개인적으로는 Set을 사용하는 방법이 가장 간결하고 성능이 좋은것 같다. filter 및 indexOf를 사용하는 방법은 ES5 이전의 환경에서 유용할 수 있고, 선택한 방법은 코드의 가독성 및 성능 요구에 따라 다를 수 있으니 적절한 상황에 맞게 사용하자.