본문 바로가기
Front End/JavaScript

[JS] Array Methods Practice

by 옐 FE 2021. 6. 30.

udemy, The Complete JavaScript Course 2021: From Zero to Expert!

string을 Title case capitalization 하는 함수 만들기

 

 

 


 

 

 

// this is a nice title -> This Is a Nice Title


const convertTitleCase = function (title) {
  const capitalized = str => str.replace(str[0], str[0].toUpperCase());

  const exceptions = ['a', 'an', 'the', 'and', 'but', 'with', 'on', 'in'];

  const titleCase = title
    .toLowerCase()
    .split(' ')
    .map(word => (exceptions.includes(word) ? word : capitalized(word)))
    .join(' ');
  return capitalized(titleCase);
};

console.log(convertTitleCase('this is a nice title'));
console.log(convertTitleCase('this is a LONG title but not too long'));
console.log(convertTitleCase('and here is another title with an EXAMPLE'));

제일 앞의 문자를 대문자로 바꾸지 않을 예외를 변수로 만들고 그걸 새로이 array로 도출하는 과정에서 제외시키는 걸 Conditional(ternary) operator로 만든다. 강의를 보기 전에 variable exceptions를 word.includes(exceptions)로 코드를 짰더니 'another'에도 'an'이 들어가서 이것 역시 소문자로 출력하더라. 그래서 어떻게 해야 another를 제외시킬 수 있을까 봤더니 word에서 exceptions을 찾아보는 게 아닌, exceptions에 word가 포함되면 제외시키는 걸로 했더니 원하는 대로 출력이 되었다-!

 

그리고 문장 첫 시작의 단어가 exceptions에 포함 되더라도 대문자로 시작할 수 있도록 capitalized라는 함수를 만들어서 array method chain에 한 번 쓰고, return할 때 한 번 더 쓰면 세 번째 string의 'and...'는 'And...'로 출력된다. 

댓글