[ μλ°μ€ν¬λ¦½νΈ(JavaScript) ] filter + join λ©μλλ‘ κ°λ μ±μλ μ½λ μμ±νκΈ°
π filter + join λ©μλλ‘ κ°λ μ± μλ μ½λ μμ±νκΈ°
string | null
νμ
μ κ°μ§λ a
, b
λ₯Ό μ¬μ©νμ¬ a·b
λ‘ λνλ΄μΌνλ€. λ§μ½, λ μ€μ νλλΌλ null
μΌ κ²½μ° ·
λ₯Ό νμνμ§ μκ³ , string
νμ
λ§ λνλ΄μΌνλ€. μλ₯Ό λ€μ΄ a = 'foo'
μ΄κ³ , b = 'bar'
μΌ λ λ λ€ κ°μ΄ μ‘΄μ¬νλ©΄ foo·bar
λ‘, a
νμ
λ§ μ‘΄μ¬νλ©΄ foo
, b
νμ
λ§ μ‘΄μ¬νλ©΄ bar
, a
μ b
λ λ€ μ‘΄μ¬νμ§ μλ κ²½μ° null
νΉμ ''μ λνλ΄μΌνλ€. μ΄λ΄ λ μ΄λ»κ² κ°λ
μ± μκ² μ½λλ₯Ό μμ±ν κ²μΈκ°?
리μ‘νΈμμ μ¬μ©ν λ 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: ''