코테 - 배열 중복 삭제

aydennote·2023년 4월 30일
0

Coding_TEST

목록 보기
3/6
post-thumbnail

1. Set

arr = [1, 2, 3, 3, 4, 4, 4]

arr 배열에서 3과 4가 중복으로 값이 할당되어 있을 때, Set()을 이용해 중복이 없는 배열을 변수에 할당할 수 있다.

const arr = [1, 2, 3, 3, 4, 4];
const test1 = new Set(arr);
const test2 = [...new Set(arr)];

console.log(test1, test2);

test1 처럼 사용하면 중복을 제거한 결과를 set 형식으로 변수에 할당하고
test2 처럼 사용하면 중복을 제거한 결과를 다시 배열로 변환한 후에 변수에 할당한다.
상황에 따라 Set 메서드가 필요한 경우 test1 처럼 사용하면 되고 배열 메서드가 필요한 경우 test2 처럼 사용하면 된다.

2. filter, indexOf

arr = [1, 2, 3, 3, 4, 4, 4]

arr 배열에서 3과 4가 중복으로 값이 할당되어 있을 때, filterindexOf를 이용해 중복이 없는 배열을 변수에 할당할 수 있다.

const arr = [1, 2, 3, 3, 4, 4];

const newArr = arr.filter((element, index) => {
	return arr.indexOf(element) === index;
});

console.log(newArr);

filter 콜백 함수의 매개변수(인자, 파라미터)로 각 요소와 인덱스를 전달 받아 요소의 인덱스와 현재 인덱스가 동일한 값들만 배열로 반환한다.
indexOf는 중복된 값이 있을 경우 그 중 제일 앞에 있는 인덱스만 반환하는 것을 이용한 풀이이다.
예를 들어, 숫자 3 중복 제거를 보면 아래와 같다.
arr.indexOf(3) === 3 는 true.
arr.indexOf(3) === 4 는 false.

3. caching(frequency map)

arr = [1, 2, 3, 3, 4, 4, 4]

arr 배열에서 3과 4가 중복으로 값이 할당되어 있을 때, 반복문과 객체를 이용해 중복이 없는 배열을 변수에 할당할 수 있다.

const arr = [1, 2, 3, 3, 4, 4];

function test(arr) {
	const obj = {};
	const result = [];

    for (const element of arr) {
		if (!obj[element]) {
			result.push(element);
        }
        obj[element] = element;
	}
	return result;
}

console.log(test(arr));

test 함수 내부에서 obj라는 객체와 중복이 없는 값을 저장할 배열을 선언하고 반복문을 통해 객체 안에 배열 요소를 key로 가진 데이터가 없다면 result 배열에 저장하고 obj에 해당 요소를 key와 value로 저장한다.
마지막으로 그렇게 반복문이 끝난 뒤 저장된 result 배열을 반환한다.

profile
기록하는 개발자 Ayden 입니다.

0개의 댓글