TIL

[TIL] 221009 map, filter, Array.from()으로 수열 만들기, 배열 비교하기

jhlee_ 2022. 10. 9. 21:07

2022년 10월 09일 일요일

오늘 공부한 내용

1. 프로그래머스 문제풀이

  • 중복된 숫자 개수
  • 배열의 유사도

 

1️⃣ map, filter에 대해 다시 살펴보았다.
프로그래머스를 풀다보니 생각나는대로, 편한 메소드를 골라 사용하고 있었다.
예를 들어, 프로그래머스 문제 중 중복된 숫자 개수를 풀 때,
처음에 다음과 같이 코드를 작성 하였다.

function solution(array, n) {
    var counter = 0;
    array.map((e, i) => e === n && counter++ )
    return counter;
}

counter 변수를 선언하고 array를 map으로 돌려서 조건이 만족할때 숫자 counter를 올렸는데 다른 사람들의 풀이를 보니, filter를 사용하는 것이 더 올바른 코드라고 생각되었다.

  • filter조건을 만족하는 요소를 모아 새로운 배열로 반환
  • map주어진 함수를 호출한 결과를 모아 새로운 배열로 반환
    하므로 조건으로 요소를 걸러내야하는 상황인 위 문제는 filter를 사용하는 것이 맞다고 생각한다.
    따라서 다시 작성한 코드는 다음과 같다
  • function solution(array, n) { return array.filter((e, i) => e === n ).length }

 

2️⃣ Array.from()
n이라는 수가 주어졌을 때 1부터 n까지 나열된 배열 만들때,
 Array()와 fill()을 사용하여Array(n).fill(0).map((e,i)=> i+1);과 같이 작성하였는데
Array.from()을 사용한 풀이 보아 정리해보았다.

참고) Array.from()은 유사배열객체(array-like object)나
반복가능한 객체(iterable object)를 얕게 복사해 새로운 Array 객체를 만든다

Array.from({ length: 5 }), (value, index) => i); // [0,1,2,3,4]

Array가 undefined로 각자리에 초기화 되고, value는 undefined

 

3️⃣ 두 배열 비교하기
자주 사용한건데 까먹어서 정리함. 합집합, 여집합 등등도 마주치는대로 정리하려고 따로 글 작성

728x90