diff --git a/packages/example/src/1week/04/__submit__/minsoo-web.ts b/packages/example/src/1week/04/__submit__/minsoo-web.ts index 8b57c97..d1acc10 100644 --- a/packages/example/src/1week/04/__submit__/minsoo-web.ts +++ b/packages/example/src/1week/04/__submit__/minsoo-web.ts @@ -1,13 +1,16 @@ -export function convertToConditionalUpperCase(words: string[]): string[] { - const capitalized = [] - - for (let i = 0; i < words.length; i += 1) { - if (words[i].length > 5) { - capitalized.push(words[i].toUpperCase()) - } else { - capitalized.push(words[i].toLowerCase()) - } - } +const isLongerThanCriteria = (text: string, criteria = 5) => + text.length > criteria - return capitalized +/** + * 접근 방법: + * 앞선 문제들과 비슷하게, 순수함수를 뽑고, + * map을 활용해서 copy on write 방식을 적용해봤습니다. + * + * @param words 단어들의 배열입니다. + * @returns 컨디션에 맞게 배열의 단어들을 소문자와 대문자의 조합으로 반환해줍니다. + */ +export function convertToConditionalUpperCase(words: string[]): string[] { + return words.map((word) => + isLongerThanCriteria(word) ? word.toUpperCase() : word.toLocaleLowerCase(), + ) }