알고리즘 19 - Abbreviate a Two Word Name

Q.

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

A)

function abbrevName(name){
  let nameSplit = name.split(' ');
  let initial = [];
  
  for (el of nameSplit) {
    initial += el[0];
  }
  initial = initial.split('').join('.').toUpperCase();
  
  return initial;
}

other

나는 수도코드로 생각한 과정대로, 자르고 -> index[0]을 담고 -> 다시 합치고 -> 점으로 묶고 -> 대문자로 변환한는 순서대로 짰다. 그런데 .map으로 한 줄로 푼 솔루션을 보았다!

  • .map : 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환한다.

예를 들어 arr.map(x => x * 2)이러면 배열의 각 요소에 2를 곱한 배열을 반환하는 것이다. 전에도 문제를 풀다가 이 메소드로 푼 걸 본 것 같은데, 자주 나오는 것 같으니 익혀놔야겠다!

function abbrevName(name){
    return name.split(' ').map(i => i[0].toUpperCase()).join('.')
}

여기서는 인덱스의 첫번째[0] 값을 대문자로 변환해서 반환하도록 사용되었다. 똑똑한 메소드 같으니라구...😁

좋은 웹페이지 즐겨찾기