[Js 알고리즘 공부] 중복제거하기

김효인·2021년 6월 19일
post-thumbnail

자바스크립트의 배열에서 중복 되는 값을 제거하는 방법은 3가지가 있습니다.

  1. Set
  2. indexOf(), filter()
  3. forEach(). includes()

1. Set

Set은 ES6에서 등장한 새로운 data object입니다. set은 unique 값만 저장할 수 있도록 하기 때문에 array에 넣게되면 중복되는 값이 사라집니다.

const array= ['a',1,1,2,3,3,'a']
Array.from(new Set(array));
//['a',1,2,3]

2. indexOf(), filter()

이 방법을 이해하기 위해서는 filter와 indexOf 메소드를 이해해야합니다. indexOf 함수는 배열에서 특정값이 처음으로 나타내는 index를 리턴합니다.
filter 함수는 array내의 각 element에 조건을 주고, true값을 리턴한 element만 모아서 새로운 array를 만드는 것입니다.
쉽게 말해, 특정 조건에 부합하는 배열의 모든 값을 배열 형태로 리턴합니다. 이는 중복값만 가져올수도 있습니다.

const Arr = [1, 2, 3, 1, 2];

const uniqueArr = Arr.filter((element, index) => {
    return Arr.indexOf(element) === index;
});

document.writeln(Array.isArray(uniqueArr));
document.writeln(uniqueArr);

Arr.filter(callback);

-> filter() 함수는 Arr 원소들을 콜백함수로 전달하여 각 원소들이 콜백 함수에 정의된 기준에 부합하는지 검사하고, 검사 결과가 true를 리턴하는 원소를 모아서 배열 형태로 리턴합니다.

Arr.indexOf(element) === index

-> filter() 함수로 전달된 콜백함수는 검사하고 있는 값(element)이 배열(Arr)에서 가장 처음으로 나타나는 index와 검사하고 있는 원소의 index와 비교하여 같은 경우에만 true를 리턴합니다. 위의 예제에서 Arr의 값이 순서대로 전달되면
'Arr.indexOf(element) === index' 구문은
true, true, true, false, false 를 순서대로 리턴하여 중복되는 값이 첫번째로 나타나는 경우에만 filter 함수에서 걸러지도록 하였습니다.

3. forEach(),includes()

forEach() 함수는 주어진 배열을 순회하면서, 배열의 원소들로 주어진 callback함수를 실행합니다.
include() 함수는 주어진 배열에 특정 값이 포함되는지 여부를 검사합니다.

출처: https://hianna.tistory.com/422 [어제 오늘 내일]

profile
내가 보려고 만든 velog

0개의 댓글