TIL 20221103 - 128번(2차원 중복배열)

hoin_lee·2022년 11월 3일
0

TIL

목록 보기
92/236

지금 매니저일을 진행하는 게 상담기간이여서 아침부터 저녁까지 상담을 하고 나니 진이나 기운이 다 빠져서 그대로 기절하는 게 일상인 것 같다.
다음주 월요일까진 상담이 계속 이어지는데 그 이후로 시간이 나면 개인 공부시간이 생기지 않을까 싶다.
그래도 매일 30분이상 코딩하기는 알고리즘 문제로라도 진행하고 있다!

오늘 공부

알고리즘 문제 풀기(프로그래머스)
https://github.com/hoinlee-moi/Algorithm

JS기본문법 다시 공부
https://github.com/hoinlee-moi/ModernJS

React 강의 듣기
https://github.com/hoinlee-moi/React_prac

중복제거

이전에 filter와 set을 다뤘지만 forEach가 있었다.

forEach

let arr = [1, 1, 2, 3, 4];
let uniqueArr = [];
arr.forEach((element) => {
//배열 전체를 순회하면서 uniqueArr에 현재 순회중인 element가 존재하지 않는다면 push
	if(!uniqueArr.includes(element)){
		uniquArr.push(element);
	}
});
console.log(uniqueArr);

//result : [1, 2, 3, 4]

2차원 배열 중복 제거

위와 같이 1차원 배열에서의 중복 제거 방법을 보고 2차원 배열 중복 제거를 해봣는데 전혀 되질 않았다.

//최종 변경 코드
let locations = [
  [126, 34],
  [126, 34],
  [126, 35],
  [127, 34],
];

function removeDup(arr) {
  return [...new Set(arr.join("|").split("|"))]
    .map((v) => v.split(","))
    .map((v) => v.map((a) => +a));
}

let uniqueArr = removeDup(locations);
console.log(uniqueArr);

다차원 배열은 set 형태로 만들어도 그대로니 문자열 형태의 1차원 배열로 만든 다음에 set으로 만들어 중복을 제거하고 다시 2차원 배열의 형태로 돌리는 방식이다.

join,split

- join : 배열의 모든 요소를 연결해 하나의 문자열로 만든다.
console.log(locations.join("|")); 
// 126,34|126,34|126,35|127,34

- split : String 객체를 지정한 구분자를 이용해 여러개의 문자열로 나눈다.
console.log(location.join("|").split("|")); 
//[ '126,34', '126,34', '126,35', '127,34' ]

//이렇게 되면 이제 set을 사용해 중복제거가 가능하다!

let unique = [...new Set(locations.join("|").split("|"))];
console.log(unique.map((v) => v.split(",")));
// [ [ '126', '34' ], [ '126', '35' ], [ '127', '34' ] ]

하지만 이럴경우 숫자가 아닌 문자열이 들어가게되어 이중 map을 이용하여 풀어내자

let unique = [...new Set(locations.join("|").split("|"))];
let uniqueArr = unique.map((v) => v.split(","))
console.log(uniqueArr.map((v) => v.map((a) => +a)));
/*
v는 ["126", "34"]와 같은 요소 하나하나
a는 그안에 있는 요소에 접근하는 것으로 "126"과 같은 문자열 요소들을 숫자로 바꿔준다.
*/

출처 사이트

profile
https://mo-i-programmers.tistory.com/

0개의 댓글