JavaScript/혼자하는 문법공부

[Javascript] map 메소드

공쥬쥬 2022. 8. 11. 12:52

친한듯 친하지 않은 map 함수를 위와 같이 수기로 정리 했다. 

 

 

map함수는 

반복문을 돌며 배열안의 요소들을 1:1로 짝지어준다. 

어떻게 짝지어 줄 것인가 정의한 함수를 메서드의 인자로 넣어주면 된다.

map을 실행하는 배열과 결과로 나오는 배열은 다른객체가 된다.

기존 배열 수정하지 않고 새로운 배열을 만들어 낸다.

 

즉 map 함수는 --> arr의 값을 하나씩 불러와 thisArg 값에 맞게 실행한 후 새로운 배열 보내는 것이다.

 

프로그래머스 코딩테스트에서 리뷰했던 문제이다. 

function solution(a, b) {
    var answer = 0;
    for(let i = 0; i < a.length; i++) {
        answer += a[i]*b[i]
    }
    return answer
}

for문을 돌려 a,b의 내적을 구하는 문제이다.

(https://school.programmers.co.kr/learn/courses/30/lessons/70128)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

이 문제를 팀원 중 한 분께서 map함수를 이용하여 구현하셨는데 매우 인상적이었다!

function solutin (a,b) {
	return(a.map((cur.i) => cur*b[i])).reduce((a,b) => a+b)
    }

for문을 사용하여 a의 길이만큼 도는 부분을 map함수로 표현했다.

내가 수기로 적은 부분 중 arr에 a를 넣어주었다

배열 내에서 현재 처리해야하는 값을 cur로 잡아주고, 처리해야하는 i라는 index를 설정했다. 

이렇게 되면 --->>a의 값을 하나씩 불러와서  i와 1;1로 짝지어 cur이라는 함수에 넣어준다.

이후 문제에서 요구한대로 a[n]*b[n]을 해줘야 하기에 cur*b[i]를해준다

cur에는 이미 a[i]가 들어가 있는 상태 !!

 

map함수와 조금 더 친해지고 정확한 사용법이 익게 되면 코드를 훨씬 간단하고 짧게 짤수 있을것 같다