Frontend/JavaScript

[ μžλ°”μŠ€ν¬λ¦½νŠΈ(JavaScript) ] filter + join λ©”μ„œλ“œλ‘œ κ°€λ…μ„±μžˆλŠ” μ½”λ“œ μž‘μ„±ν•˜κΈ°

YWTechIT 2022. 11. 15. 21:27
728x90

πŸ“ filter + join λ©”μ„œλ“œλ‘œ 가독성 μžˆλŠ” μ½”λ“œ μž‘μ„±ν•˜κΈ°

string | null νƒ€μž…μ„ κ°€μ§€λŠ” a, bλ₯Ό μ‚¬μš©ν•˜μ—¬ a·b둜 λ‚˜νƒ€λ‚΄μ•Όν•œλ‹€. λ§Œμ•½, λ‘˜ 쀑에 ν•˜λ‚˜λΌλ„ null일 경우 ·λ₯Ό ν‘œμ‹œν•˜μ§€ μ•Šκ³ , string νƒ€μž…λ§Œ λ‚˜νƒ€λ‚΄μ•Όν•œλ‹€. 예λ₯Ό λ“€μ–΄ a = 'foo'이고, b = 'bar'일 λ•Œ λ‘˜ λ‹€ 값이 μ‘΄μž¬ν•˜λ©΄ foo·bar둜, aνƒ€μž…λ§Œ μ‘΄μž¬ν•˜λ©΄ foo, bνƒ€μž…λ§Œ μ‘΄μž¬ν•˜λ©΄ bar, a와 b λ‘˜ λ‹€ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” 경우 null ν˜Ήμ€ ''을 λ‚˜νƒ€λ‚΄μ•Όν•œλ‹€. 이럴 λ•Œ μ–΄λ–»κ²Œ 가독성 있게 μ½”λ“œλ₯Ό μž‘μ„±ν•  것인가?

728x90

λ¦¬μ•‘νŠΈμ—μ„œ μ‚¬μš©ν•  λ•Œ AS-ISλŠ” 쑰건식과 join λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ a && b ? [a, b].join('·') : a || b둜 λ‚˜νƒ€λƒˆλŠ”λ°, 가독성이 λ„ˆλ¬΄ λ–¨μ–΄μ‘Œλ‹€. κ·Έλž˜μ„œ TO-BE 처럼 filter + join λ©”μ„œλ“œλ₯Ό 같이 μ‚¬μš©ν•˜λ‹ˆ 가독성이 이전보닀 μ¦κ°€ν•˜μ˜€λ‹€.

const category: string | null = '개발';
const language: string | null = 'Typescript';

// AS-IS
const result1 =
  category && language ? [category, language].join('·') : category || language

// TO-BE
const result2 = [category, language].filter(Boolean).join('·')

// category, language λͺ¨λ‘ 값이 μžˆλŠ”κ²½μš°
πŸ‘‰πŸΎ result1: 개발·Typescript
πŸ‘‰πŸΎ result2: 개발·Typescript

// categoryλŠ” μ‘΄μž¬ν•˜κ³  languageλŠ” null인 경우
πŸ‘‰πŸΎ result1: Typescript
πŸ‘‰πŸΎ result2: Typescript

// categoryλŠ” null이고 languageλŠ” μ‘΄μž¬ν•˜λŠ” 경우
πŸ‘‰πŸΎ result1: 개발
πŸ‘‰πŸΎ result2: 개발

// λ‘˜ λ‹€ null인 경우
πŸ‘‰πŸΎ result1: null
πŸ‘‰πŸΎ result2: ''

 

λ°˜μ‘ν˜•