2019/08/11 TIL(Today I Learn)

μ½”ν”Œλ¦Ώ Javascript Basic을 λλƒˆλ‹€.

  • λ§ˆμ§€λ§‰ 7번째 μ£Όμ œλŠ” 객체에 νŠΉμ •ν•œ key에 λ“€μ–΄μžˆλŠ” 배열을 μ΄μš©ν•˜λŠ” λ¬Έμ œμ˜€λ‹€.
  • 객체에 νŠΉμ •ν•œ key 값이 μ—†κ±°λ‚˜, key 값에 λŒ€μ‘ν•˜λŠ” μš”μ†Œκ°€ 배열이 μ•„λ‹λ•Œ λ˜λŠ” ν•΄λ‹Ή 배열이 λΉ„μ–΄μžˆμ„ 경우, undefinedλ‚˜ 빈 κ°’ λ˜λŠ” 빈 배열을 λ°˜ν™˜ν•΄μ•Όν•˜λŠ” 쑰건이 μžˆμ—ˆλ‹€.

    • μ²˜μŒμ—λŠ” νŠΉμ •ν•œ key 값이 μžˆλŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•΄ 쑰건문 if(key in obj)을 μ„Έμ›Œμ£Όμ—ˆλ‹€.
    • ν•˜μ§€λ§Œ ν•΄λ‹Ή keyκ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠμœΌλ©΄, μš”μ†Œκ°€ 배열인지 ν™•μΈν•˜λŠ” 쑰건문 if(Array.isArray(obj[key]))μ—μ„œ ν•¨κ»˜ κ±ΈλŸ¬μ§€λŠ” 것을 ν™•μΈν–ˆλ‹€.
    • 배열이 λΉ„μ–΄μžˆμ„ κ²½μš°μ—λ„ νŠΉμ • 인덱슀둜 값을 μ‘°νšŒν•˜κ±°λ‚˜ filter, map, silce λ©”μ†Œλ“œλ₯Ό ν†΅ν•˜λ©΄ μžλ™μœΌλ‘œ undefinedλ‚˜ 빈 배열을 λ°˜ν™˜ν•΄μ£Όμ—ˆλ‹€. λ”°λΌμ„œ λ³„λ„μ˜ 쑰건문을 μž‘μ„±ν•˜μ§€ μ•Šμ•˜λ‹€.
    • μ˜ˆμ™Έμ μœΌλ‘œ 빈 배열에 reduce λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•  땐 였λ₯˜κ°€ λ‚˜μ„œ 쑰건문 if(obj[key].length === 0)을 μΆ”κ°€ν•΄μ£Όμ—ˆλ‹€.
    • λΉ„μŠ·ν•œ 문제λ₯Ό 계속 ν’€λ‹€λ³΄λ‹ˆ λ‚˜μ€‘μ—λŠ” μ•„λž˜μ™€ 같은 포맷으둜 μž‘μ„±ν•˜κ²Œ λ˜μ—ˆλ‹€.
if(!Array.isArray(obj[key])){
  return [];
}
return obj[key].map(x => x ** 2);

배운 것 정리

  • if(!Array.isArray(obj[key])) => Property(obj[key])κ°€ 배열이 μ•„λ‹ˆκ±°λ‚˜ 빈 값일 λ•Œ 싀행됨
  • if(Array.isArray(obj[key])) => Property(obj[key])κ°€ 배열일 λ•Œ 싀행됨 (빈 λ°°μ—΄ 포함)
  • undefinedκ°€ λ°˜ν™˜λ˜λŠ” 상황

    • arr[nonExistentIndex] => μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” 인덱슀λ₯Ό 톡해 쑰회
    • nullArr[index] => λΉ„μ–΄μžˆλŠ” λ°°μ—΄μ—μ„œ 인덱슀λ₯Ό 톡해 쑰회
  • 빈 배열이 λ°˜ν™˜λ˜λŠ” 상황

    • nullArr.filter OR .map => μƒˆλ‘œμš΄ 배열이 λ°˜ν™˜λ˜λŠ” λ©”μ†Œλ“œ
    • nullArr.slice => μ›λ³Έμ˜ μžλ£Œν˜•μ„ λ”°λ₯Έ μƒˆλ‘œμš΄ λ‚΄μš©μ„ λ°˜ν™˜
  • 였λ₯˜κ°€ λ°œμƒν•˜λŠ” 상황 => 쑰건문 if(λ°°μ—΄.length === 0)이 ν•„μš”ν•˜λ‹€.

    • nullArr.reduce
← 이전 κ²Œμ‹œλ¬Ό2019/08/12 TIL(Today I Learn)
λ‹€μŒ κ²Œμ‹œλ¬Ό β†’μ™• 초보 개발자의 Gatsby λΈ”λ‘œκ·Έ μ‹œμž‘ν•˜κΈ° (1) - μ„€μΉ˜ν•˜κΈ°
λͺ©λ‘