반응형

자바스크립트에서 배열과 문자열의 중복값을 찾거나 제거를 해야하는 상황이 있을텐데요.

방법에 대해 알아보도록 하겠습니다. 

 

아래 순서대로 진행하며 각 2가지 방법을 소개하도록 하겠습니다.

 

1. 배열에서 중복값 찾기

1-1. Set 활용하기
1-2. 객체 활용하기

 

2. 문자열에서 중복값 찾기

2-1. Set 객체와 split 메서드 활용하기
2-2. 객체 활용하기

 


 

1. 배열에서 중복값 찾기

1-1. Set 활용하기

const arr = [1, 2, 3, 2, 3, 2, 4, 5];
const result = [...new Set(arr.filter((item, index) => arr.indexOf(item) !== index))];

console.log(result); // [2, 3]

// 또는 모두 찾고 싶을 때, new Set()을 제거한다.
const arr2 = [1, 2, 3, 2, 3, 2, 4, 5];
const result2 = arr2.filter((item, index) => arr2.indexOf(item) !== index);

console.log(result2); // [2, 3, 2]

ES6에서는 Set 객체를 사용하여 중복된 값을 제거할 수 있습니다.

Set 객체는 중복되지 않는 값들의 집합을 나타내는 객체입니다.

위의 코드에서는 배열에서 중복된 값들을 찾아내고(filter를 활용), Set 객체로 변환하여 중복된 값이 제거된 배열을 만든 뒤, 다시 배열로 변환합니다.

 

또는 모든 중복값을 찾고 싶을 때는 new Set을 제외한 filter 메서드를 통해 찾을 수 있습니다.

 

1-2. 객체 활용하기

const arr = [1, 2, 3, 2, 3, 2, 4, 5];
const obj = {};
const result = [];

for (let i = 0; i < arr.length; i++) {
  if (obj[arr[i]]) {
    result.push(arr[i]);
  } else {
    obj[arr[i]] = true;
  }
}

console.log(result); // [2, 3, 2]
console.log([...new Set(result)]); // [2, 3]

위의 코드에서는 객체를 활용하여 중복된 값을 찾아냅니다.

객체의 key에는 배열의 값이 들어가고, value에는 true가 들어갑니다.

배열의 요소를 반복하면서 이미 객체에 존재하는 값인 경우, result 배열에 추가합니다.

 

이 역시 new Set을 감싸주면 고유 숫자만 담긴 배열이 resut 배열에 들어갑니다.

 


 

2. 문자열에서 중복값 찾기

2-1. Set 객체와 split 메서드 활용하기

const str = 'hello world!!!';
const result = [...new Set(str.split('').filter((item, index) => str.indexOf(item) !== index))];

console.log(result); // ['l', 'o', '!']

// 또는 모두 찾고 싶을 때, new Set()을 제거한다.
const str2 = 'hello world!!!';
const result2 = str2.split('').filter((item, index) => str2.indexOf(item) !== index);

console.log(result2); // ['l', 'o', 'l', '!', '!']

문자열에서 중복된 값을 찾기 위해서는 문자열을 배열로 변환해야 합니다. 

위의 코드에서는 문자열을 split 메서드를 사용하여 배열로 변환하고, Set 객체를 사용하여 중복된 값을 제거합니다.

 

마찬가지로 new Set을 제외하면 문자열의 모든 중복값이 배열에 담깁니다.

 

2-2. 객체 활용하기

const str = 'hello world!!!';
const obj = {};
const result = [];

for (let i = 0; i < str.length; i++) {
  if (obj[str[i]]) {
    result.push(str[i]);
  } else {
    obj[str[i]] = true;
  }
}

console.log(result); // ['l', 'o', 'l', '!', '!']
console.log([...new Set(result)]); // ['l', 'o']

위의 코드에서는 객체를 활용하여 문자열의 중복된 값을 찾아냅니다.

문자열의 각 문자를 반복하면서, 이미 객체에 존재하는 값인 경우, result 배열에 추가합니다.

 

여기도 마찬가지로 new Set을 활용해줄 수 있겠군요.

 


 

이상 자바스크립트(JavaScript)로 배열과 문자열에서 중복된 값을 쉽게 찾을 수 있는 방법을 알아보았습니다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기