코딩테스트

코딩테스트 풀이 - 배열에서 문자열 대소문자 변환하기 | for문 if문 풀이, forEach문 풀이, map 풀이

히새 2023. 12. 1. 17:50

 

배열의 i 번째를 반복문으로 돌려서

홀수라면 대문자로 바꿔서 빈배열에 넣고

짝수라면 소문자로 바꿔서 빈배열에 넣어준다

더 이상 빈 배열이 아니게 된 빈 배열을 반환한다

 

 

이런 문제와 유사한 문제를 풀 때 for 문 안에 if 문을 넣는 것 외에 다른 방법은 없을까?


🎈 forEach 문을 사용한 풀이

 

forEach 문으로 풀어보려다가 index 를 어떻게 구해야 할지 모르겠어서 멈췄는데,

생각해보니까 forEach 문 안에 들어있는 콜백함수는 현재요소, 현재인덱스, 배열전체를 매개변수로 가진다는 것이 떠올랐다...

이렇게 ... ! for + if 문 조합을 탈출해서 forEach + 삼항연산자 조합으로 풀어보았다.!

forEach 의 콜백함수가 가지는 세 가지 매개변수 꼭 기억하기...


🎈 map 을 사용한 풀이

 

map 도 사용할 수 있다.

 

먼저 map() 메서드는 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환한다.

arr.map(callback(currentValue[, index[, array]])[, thisArg])

 

매개변수로 콜백함수와 콜백을 실행할 때 this 로 사용되는 값인 thisArg 를 가지며, 콜백함수는 세 가지 인수를 가진다.

 

- currentValue : 처리할 현재 요소 

- index : 처리할 현재 요소의 인덱스

- array : map() 을 호출한 배열

 

반환 값 : 배열의 각 요소에 대해 실행한 콜백의 결과를 모은 새로운 배열

 

음? 왜지!?

 

콜백함수 안에서 return 을 한 번 더 작성해주어야 했었는데 그 이유는 콜백 함수에서 변환된 값을 반환하기 위해서이다.

 

map() 메서드는 새로운 배열을 반환하는데, 이 배열은 콜백 함수에서 반환한 값들로 구성된다.

그래서 map() 메서드 내부에서 각 요소에 대한 변환 작업을 수행하고, 변환된 값을 반환해야 한다.

그렇지 않으면 map() 메서드는 undefined 를 반환하게 된다.

 

따라서, map() 메서드 내부의 콜백 함수에서는 return 문을 사용하여 각 요소에 대한 변환된 값을 반환해야한다.