[알고리즘] Codewars - Format a string of names like 'Bart, Lisa & Maggie'.

Given: an array containing hashes of names

Return: a string formatted as a list of names separated by commas except 
for the last two names, which should be separated by an ampersand.

Example:

list([ {name: 'Bart'}, {name: 'Lisa'}, {name: 'Maggie'} ])
// returns 'Bart, Lisa & Maggie'

list([ {name: 'Bart'}, {name: 'Lisa'} ])
// returns 'Bart & Lisa'

list([ {name: 'Bart'} ])
// returns 'Bart'

list([])

my solutions

function list(names){
  if(names.length === 0){
    return '';
  }
  //요소 객체가 1개만 존재하면 1개만 내뱉고
  if(names.length === 1){
    return `${names[0].name}`
  }
  //요소 객체가 2개만 존재하면 &로 마무리한다.
  if(names.length === 2){
    return `${names[0].name} & ${names[1].name}`
  }
  //요소 객체가 많이 존재하면 계속 붙준다
  let head = names[0].name;
  let tail = names.slice(1);
  return `${head}, `+list(tail);
}

다른 솔루션들 보는데 reduce, map과 정규식을 이용한 솔루션들이 보인다! 추후에 참조해서 풀어보자.

좋은 웹페이지 즐겨찾기