Write a function to convert a name into initials. This kata strictly takes two words with one space in between them.
The output should be two capital letters with a dot separating them.
It should look like this:
Sam Harris => S.H
patrick feeney => P.F
function abbrevName(name){
let nameSplit = name.split(' ');
let initial = [];
for (el of nameSplit) {
initial += el[0];
}
initial = initial.split('').join('.').toUpperCase();
return initial;
}
나는 수도코드로 생각한 과정대로, 자르고 -> index[0]을 담고 -> 다시 합치고 -> 점으로 묶고 -> 대문자로 변환한는 순서대로 짰다. 그런데 .map
으로 한 줄로 푼 솔루션을 보았다!
.map
: 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환한다. 예를 들어 arr.map(x => x * 2)
이러면 배열의 각 요소에 2를 곱한 배열을 반환하는 것이다. 전에도 문제를 풀다가 이 메소드로 푼 걸 본 것 같은데, 자주 나오는 것 같으니 익혀놔야겠다!
function abbrevName(name){
return name.split(' ').map(i => i[0].toUpperCase()).join('.')
}
여기서는 인덱스의 첫번째[0] 값을 대문자로 변환해서 반환하도록 사용되었다. 똑똑한 메소드 같으니라구...😁