이상한 문자 만들기
문제 설명
문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
제한 사항
문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
map()을 사용해서 새로운 배열로 만드는 것만 알았지 인덱스 값도 받는 걸 완전 잊고있었다. map()은 콜백함수의 매개변수로 받을 수 있는 종류가 세 가지가 있다.
function solution(s) {
return s.split(' ').map(word => {
return word.split('').map((a, index) => {
if (index % 2 === 0) {
return a.toUpperCase();
} else {
return a.toLowerCase();
}
}).join('');
}).join(' ');
}
isNaN() 함수는 인자가 숫자(Number)인지 여부를 판단하는 메소드. 만약 인자가 숫자이면 false를 반환하고, 숫자가 아니면 true를 반환한다.
indexOf() 메소드는 문자열이나 배열에서 지정한 값의 위치(인덱스)를 반환한다. 만약 찾으려는 값이 존재하지 않으면 -1을 반환한다.
indexOf() 메소드는 검색을 시작할 인덱스를 지정할 수 있다.
ex) index('apple',2)
//2번 인덱스부터 'apple'검색 시작
.map()은 배열 메소드 중 하나로, 배열의 각 요소에 대해 주어진 콜백 함수를 호출하고 그 결과를 새로운 배열로 반환한다.
.map() 메소드는 원본 배열을 변경하지 않는다. 대신, 각 요소에 대해 콜백 함수를 호출하여 그 결과를 새로운 배열에 추가한다. 그리고 최종적으로 새로운 배열을 반환한다.
array.map((currentValue, index, array) => { ... })
currentValue: 현재 처리되고 있는 요소의 값.
index: 현재 처리되고 있는 요소의 인덱스.
array: map() 메소드가 호출된 배열.
.map(Number) : 숫자형 배열로 변환하는데 사용할 수 있다.
.map(String) : 문자열 배열로 변환하는데 사용할 수 있다.
let str = 'hello world';
str = str.toUpperCase();
console.log(str); // "HELLO WORLD"