21.02.01

μ΄μ†Œμž„Β·2021λ…„ 2μ›” 1일
0

TIL

λͺ©λ‘ 보기
9/12

πŸ’‘

κ³ μ°¨ν•¨μˆ˜

  • func() ν˜•νƒœλ‘œ λ¦¬ν„΄ν•˜λ©΄ μ‹€ν–‰ ν›„μ˜ 값이 λ¦¬ν„΄λœλ‹€.
    ν•¨μˆ˜ ν˜•νƒœλ‘œ λ¦¬ν„΄ν•˜κΈ° μœ„ν•΄μ„œλŠ” function(num) {…}

  • κ³ μ°¨ ν•¨μˆ˜λŠ” ν•¨μˆ˜λ₯Ό 인자둜 λ°›κ±°λ‚˜ ν•¨μˆ˜λ₯Ό λ¦¬ν„΄ν•˜λŠ” ν•¨μˆ˜λ₯Ό λ§ν•˜κ³ , 콜백 ν•¨μˆ˜λŠ” ν•¨μˆ˜μ˜ 인자둜 μ „λ‹¬λ˜λŠ” ν•¨μˆ˜λ₯Ό λ§ν•œλ‹€.

  • μžλ°”μŠ€ν¬λ¦½νŠΈμ—λŠ” 기본적으둜 λ‚΄μž₯된 κ³ μ°¨ν•¨μˆ˜κ°€ μžˆλ‹€. μ•„λž˜ λ² μ—΄ λ©”μ†Œλ“œλ“€μ΄λ‹€.

    • map

      • arr.map(callback(currentValue[, index[, array]])[, thisArg])
      • λ°°μ—΄μ˜ 각 μš”μ†Œκ°€ νŠΉμ • 논리(ν•¨μˆ˜)에 μ˜ν•΄ λ‹€λ₯Έ μš”μ†Œλ‘œ 지정(map)λœλ‹€. ν•˜λ‚˜μ˜ 데이터λ₯Ό λ‹€λ₯Έ λ°μ΄ν„°λ‘œ 맡핑(mapping)ν•  λ•Œ μ‚¬μš©ν•œλ‹€.
      • λ°°μ—΄ λ‚΄μ˜ λͺ¨λ“  μš”μ†Œ 각각에 콜백 ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•œ ν›„ λ°˜ν™˜κ°’μ„ λͺ¨μ•„ μƒˆλ‘œμš΄ 배열을 λ°˜ν™˜ν•œλ‹€.
    • filter

      • arr.filter(callback(element[, index[, array]])[, thisArg])
      • λ°°μ—΄μ˜ 각 μš”μ†Œκ°€ νŠΉμ • 논리(ν•¨μˆ˜)에 λ”°λ₯΄λ©΄ 사싀(true)μΌλ•Œ, λ”°λ‘œ λΆ„λ₯˜ν•œλ‹€. 쑰건에 λ§žλŠ” λ°μ΄ν„°λ§Œ λΆ„λ₯˜(filtering)ν•  λ•Œ μ‚¬μš©ν•œλ‹€.
      • 주어진 콜백 ν•¨μˆ˜μ˜ ν…ŒμŠ€νŠΈλ₯Ό ν†΅κ³Όν•˜λŠ” λͺ¨λ“  μš”μ†Œλ₯Ό λͺ¨μ•„ μƒˆλ‘œμš΄ λ°°μ—΄λ‘œ λ°˜ν™˜ν•œλ‹€. μ–΄λ–€ μš”μ†Œλ„ ν…ŒμŠ€νŠΈλ₯Ό ν†΅κ³Όν•˜μ§€ λͺ»ν–ˆμ„ 경우 빈 배열을 λ°˜ν™˜ν•œλ‹€.
    • reduce

      • arr.reduce(callback[, initialValue])
      • λ°°μ—΄μ˜ 각 μš”μ†Œλ₯Ό νŠΉμ • 응좕 방법(ν•¨μˆ˜μ— 따라) μ›ν•˜λŠ” ν•˜λ‚˜μ˜ ν˜•νƒœλ‘œ μ‘μΆ•ν•œλ‹€(reduction).
      • λˆ„μ‚°κΈ°(accmulator)λŠ” 콜백의 λ°˜ν™˜ 값을 λˆ„μ ν•œλ‹€. 콜백의 이전 λ°˜ν™˜κ°’ λ˜λŠ”, 콜백의 첫 번째 ν˜ΈμΆœμ΄λ©΄μ„œ μ΄ˆκΈ°κ°’(initialValue)λ₯Ό μ œκ³΅ν•œ κ²½μš°μ—λŠ” ν•΄λ‹Ή 값이닀.
      • μ΄ˆκΉƒκ°’μ„ μ œκ³΅ν•˜μ§€ μ•ŠμœΌλ©΄ λ°°μ—΄μ˜ 첫 번째 μš”μ†Œλ₯Ό μ‚¬μš©ν•œλ‹€. 배열이 λΉ„μ–΄μžˆλŠ”λ° μ΄ˆκΉƒκ°’μ„ μ œκ³΅ν•˜μ§€ μ•ŠμœΌλ©΄ TypeErrorκ°€ λ°œμƒν•˜λ―€λ‘œ, μ΄ˆκΉƒκ°’μ„ μ£ΌλŠ” 게 더 μ•ˆμ „ν•˜λ‹€.
      • reduceλŠ” λ‹¨μˆœν•œ κ°’ ν•©μ‚°λΏλ§Œμ΄ μ•„λ‹ˆλΌ 쀑첩 λ°°μ—΄ 펼치기(concat), 큰 수 골라내기(값을 비ꡐ해 λ‘˜ 쀑 ν•˜λ‚˜λ₯Ό 리턴) λ“± λ‹€μ–‘ν•˜κ²Œ μ‚¬μš©ν•  수 μžˆλ‹€.
    • forEach

      • arr.forEach(callback(currentvalue[, index[, array]])[, thisArg])
      • 주어진 ν•¨μˆ˜λ₯Ό λ°°μ—΄ μš”μ†Œ 각각에 μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ‹€ν–‰ν•˜μ§€λ§Œ, mapκ³ΌλŠ” 달리 아무것도 λ¦¬ν„΄ν•˜μ§€ μ•ŠλŠ”λ‹€(undefined).
      • κΈ°μ‘΄ 값을 ν™œμš©ν•΄μ„œ 평균, ν•©μ‚° 등을 ꡬ할 λ•Œ μ‚¬μš©ν•˜μ§€λ§Œ, reduceλ₯Ό μ“°λŠ” 게 더 ꢌμž₯λœλ‹€.
    • find

      • arr.find(callback[, thisArg])
      • 주어진 νŒλ³„ ν•¨μˆ˜λ₯Ό λ§Œμ‘±ν•˜λŠ” 첫 번째 μš”μ†Œμ˜ 값을 λ°˜ν™˜ν•œλ‹€. λ§Œμ‘±ν•˜λŠ” μš”μ†Œλ₯Ό 찾지 λͺ»ν•˜λ©΄ undefinedλ₯Ό λ°˜ν™˜ν•œλ‹€.
    • sort

      • arr.sort([compareFunction])
      • λ°°μ—΄μ˜ μš”μ†Œλ₯Ό μ μ ˆν•œ μœ„μΉ˜μ— μ •λ ¬ν•œ ν›„ κ·Έ 배열을 λ°˜ν™˜ν•œλ‹€. compareFunction에 μ •λ ¬ μˆœμ„œλ₯Ό μ •μ˜ν•˜λŠ” ν•¨μˆ˜λ₯Ό 넣지 μ•Šμ„ 경우, λ¬Έμžμ—΄μ˜ μœ λ‹ˆμ½”λ“œ μ½”λ“œ 포인트 값에 따라 μ •λ ¬λœλ‹€. 원 배열이 μ •λ ¬λ˜μ–΄ λ°˜ν™˜λœλ‹€. (볡사본 μ•„λ‹˜)
    • some

      • arr.some(callback[, thisArg])
      • λ°°μ—΄ μ•ˆμ˜ μš”μ†Œ 쀑 ν•˜λ‚˜λΌλ„ νŒλ³„ ν•¨μˆ˜λ₯Ό ν†΅κ³Όν•˜λ©΄, trueλ₯Ό λ°˜ν™˜ν•œλ‹€. 빈 λ°°μ—΄μ—μ„œ ν˜ΈμΆœν•˜λ©΄ 무쑰건 falseλ₯Ό λ°˜ν™˜.
    • every

      • arr.every(callback[, thisArg])
      • λ°°μ—΄ μ•ˆμ˜ λͺ¨λ“  μš”μ†Œκ°€ νŒλ³„ ν•¨μˆ˜λ₯Ό ν†΅κ³Όν•˜λ©΄, trueλ₯Ό λ°˜ν™˜ν•œλ‹€. 빈 λ°°μ—΄μ—μ„œ ν˜ΈμΆœν•˜λ©΄ 무쑰건 trueλ₯Ό λ°˜ν™˜.
      • 거짓을 λ°˜ν™˜ν•˜λŠ” μš”μ†Œλ₯Ό λ°œκ²¬ν•œ 경우 μ¦‰μ‹œ falseλ₯Ό λ°˜ν™˜ν•œλ‹€.



좔상화

  • 컴퓨터 κ³΅ν•™μ˜ 근간을 μ΄λ£¨λŠ” μ—¬λŸ¬ κ°œλ… 쀑 ν•˜λ‚˜. μΆ”μƒν™”μ˜ λ‹€λ₯Έ 말은 μš”μ•½μ΄λ‹€. λ³΅μž‘ν•œ μ–΄λ–€ 것을 μ••μΆ•ν•΄μ„œ ν•΅μ‹¬λ§Œ μΆ”μΆœν•œ μƒνƒœλ‘œ λ§Œλ“œλŠ” 것.

  • μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό λΉ„λ‘―ν•œ λ§Žμ€ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄ μ—­μ‹œ μΆ”μƒν™”μ˜ κ²°κ³Όλ‹€. μ»΄ν“¨ν„°μ—κ²Œ 직접 λͺ…λ Ήν•˜λŠ” 방법을 λͺ°λΌλ„ μ½”λ“œλ₯Ό 톡해 λͺ…령을 전달할 수 μžˆλ‹€. λ³΅μž‘ν•œ μ—°μ‚° κ³Όμ •μ΄λ‚˜ λ‚΄λΆ€ ꡬ쑰가 μΆ”μƒν™”λœ μƒνƒœμ΄κΈ° λ•Œλ¬Έμ΄λ‹€.

  • 그렇기에, μΆ”μƒν™”λŠ” 곧 생산성(productivity)의 ν–₯상이닀. μΆ”μƒν™”μ˜ κ΄€μ μ—μ„œ ν•¨μˆ˜λ₯Ό 바라보면 ν•¨μˆ˜λŠ” 사고(thought) λ˜λŠ” 논리(logic)의 λ¬ΆμŒμ΄λ‹€.

  • ν•¨μˆ˜λ₯Ό 톡해 얻은 μΆ”μƒν™”μ˜ 단계λ₯Ό ν•œ 단계 더 높인 것이 κ³ μ°¨ ν•¨μˆ˜λ‹€. κ³ μ°¨ ν•¨μˆ˜ λ‚΄μ—μ„œμ˜ μ •ν™•ν•œ λ‘œμ§μ€ 감좔어져 μžˆμœΌλ‚˜ 더 λ³΅μž‘ν•œ μž‘μ—…μ„ μ‰½κ²Œ μˆ˜ν–‰ν•  수 μžˆλ‹€. 즉, 생산성 UP!

  • 좔상화λ₯Ό 적절히 μ‹œν‚€λ©΄ μ½”λ“œμ˜ μž¬μ‚¬μš©μ„±, 가독성을 높인닀. 순차적으둜 μ²˜λ¦¬ν•˜κ³  싢은 μž‘μ—…λ“€μ΄ μžˆμ„ λ•Œ λͺ¨λ“  μž‘μ—…μ„ ν•˜λ‚˜μ˜ ν•¨μˆ˜λ‘œ μž‘μ„±ν•  μˆ˜λ„ μžˆμœΌλ‚˜, κΈ°λŠ₯(λͺ©ν‘œ)에 따라 ν•¨μˆ˜λ₯Ό λΆ„λ¦¬ν•˜λ©΄ λ‹€λ₯Έ λͺ©μ μ„ μˆ˜ν–‰ν•  λ•Œ μž¬μ‚¬μš©ν•  수 μžˆλ‹€.




γ€€

πŸ“

μΆ”μƒν™”λΌλŠ” κ°œλ…μ€ λ§Žμ€ 생각을 ν•˜κ²Œ ν•œλ‹€. κ³ μ°¨ ν•¨μˆ˜λŠ” λ‚΄λΆ€μ μœΌλ‘œ μ–΄λ–»κ²Œ μž‘λ™ν•˜λŠ”μ§€ λͺ°λΌλ„ μ–΄μ¨Œλ“  μ‚¬μš©λ²•λ§Œ μ•Œλ©΄ μ‚¬μš©ν•  수 μžˆλ‹€. 그렇기에 λ§Žμ€ μŠ€νƒ­μ΄ 쀄어듀고 κ³ λ―Όν•  거리도 쀄어듀어 더 큰 그림을 그릴 수 있게 λ˜μ§€λ§Œ, ν•œνŽΈμœΌλ‘œλŠ” λ‚΄λΆ€μ μœΌλ‘œ μ–΄λ–»κ²Œ μž‘λ™ν•˜λŠ”μ§€ μ•Œμ•„μ•Ό 더 μ μ ˆν•œ 곳에 잘 μ‚¬μš©ν•  수 μžˆμ„ 것 κ°™λ‹€λŠ” 생각이 듀기도 ν•œλ‹€. μ›μ‹œ μžλ£Œν˜•μ΄λ‚˜ μ°Έμ‘° μžλ£Œν˜•λ„ λ©”λͺ¨λ¦¬ μ˜μ—­μ— λŒ€ν•œ 지식이 μ—†μœΌλ©΄ μ΄ν•΄ν•˜κΈ° νž˜λ“  것과 같은 λ§₯락이 μ•„λ‹κΉŒ? (λ‚˜λ§Œ... κ·Έλž¬λ‚˜?) 같은 지역 μ•ˆμ—μ„œλ„ 지도와 μ§€ν•˜μ²  λ…Έμ„ λ„μ˜ λ””μžμΈμ΄ λ‹€λ₯Έ κ²ƒμ²˜λŸΌ, λͺ©μ μ„ 잘 νŒŒμ•…ν•΄μ•Ό μ–΄λ–€ κ±Έ λΉΌκ³  μ–΄λ–€ κ±Έ 더해야 할지 μ•Œ 수 μžˆλ‹€κ³  μƒκ°ν•œλ‹€. 아직 λŒ€λž΅μ μΈ κ²ƒλ§Œ νŒŒμ•…ν•˜κΈ°μ—λ„ μ‹œκ°„μ΄ λΆ€μ‘±ν•œ κ±Έ μ•Œλ©΄μ„œλ„ 원리λ₯Ό 더 νŒŒν—€μΉ˜κ³  싢은 μ“Έλ°μ—†λŠ” μš•μ‹¬μ΄ λ“ λ‹€.

⚑Today's Shocking CodeπŸ’₯ : μ •μˆ˜λ₯Ό μš”μ†Œλ‘œ κ°–λŠ” λ°°μ—΄κ³Ό μ •μˆ˜(num)λ₯Ό μž…λ ₯λ°›μ•„ num을 배열에 μΆ”κ°€ν•˜κ³  μ •λ ¬ν•œλ‹€κ³  κ°€μ •ν•  경우, num의 인덱슀λ₯Ό 리턴해야 ν•©λ‹ˆλ‹€. 이 문제의 레퍼런슀 μ½”λ“œκ°€, arr을 받은 μ •μˆ˜ μΈμžλ³΄λ‹€ 큰 숫자만 μ œμ™Έν•˜λŠ” μ‹μœΌλ‘œ ν•„ν„°λ§ν•΄μ„œ length 값을 λ¦¬ν„΄ν•˜κ²Œ μ§œμ—¬ μžˆμ—ˆλ‹€λŠ” 것. 정말 이런 λ°©μ‹μœΌλ‘œλŠ” μ „ν˜€ 생각도 λͺ» ν•΄μ„œ ν™•μΈν•˜κ³  μž…μ„ 쩍 λ²Œλ Έλ‹€. 그래... μΈλ±μŠ€κ°’λ§Œ λ°˜ν™˜ν•˜λŠ” κ±°λ‹ˆκΉŒ 정렬이 λ˜λ“  말든 μ–΄μ¨Œλ“  κ·Έ 인자 μ•žμ—λŠ” λ™μΌν•œ 수의 μ—˜λ¦¬λ¨ΌνŠΈκ°€ μžˆκ² μ§€. 문제 λ‚΄λ‚΄ μ •λ ¬ν•  μƒκ°λ§Œ ν•˜κ³  μžˆμ—ˆλ˜ λ‚˜β€¦ (심지어 μ •λ ¬ν•œλ‹€κ³  κ°€μ •ν•  경우라고 λ¬Έμ œμ—λ„ μ ν˜€μžˆλŠ”λ°!) μ •μ‹  차리고 μ œλŒ€λ‘œ μƒκ°ν•˜λΌκ³  λ’€ν†΅μˆ˜λ₯Ό λΉ‘ λ§žμ€ 기뢄이닀. 정신적 좩격++;

0개의 λŒ“κΈ€