배열의 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 문을 사용하여 각 요소에 대한 변환된 값을 반환해야한다.
'코딩테스트' 카테고리의 다른 글
코딩테스트 풀이 - 배열의 원소만큼 추가하기 | map (1) | 2023.12.04 |
---|---|
코딩테스트 풀이 - 순서 바꾸기 | slice, 스프레드문법 (0) | 2023.12.04 |
코딩테스트 풀이 - 특정한 문자를 대문자로 바꾸기 (0) | 2023.12.01 |
코딩테스트 풀이 - 홀짝 구분하기 | node.js , 템플릿 리터럴 Template literal, 반환과 출력의 차이 (0) | 2023.12.01 |
코딩테스트 풀이 - n 번째 원소까지 (3) | 2023.12.01 |