πŸ‘‰πŸ» JS : sort( ) ν•¨μˆ˜ μ΄ν•΄ν•˜κΈ° - μ •λ ¬

sebinnnnnΒ·2023λ…„ 1μ›” 27일
0

JavaScript 기초

λͺ©λ‘ 보기
4/8
post-thumbnail

μ½”λ”©ν…ŒμŠ€νŠΈ 문제λ₯Ό ν’€λ‹€κ°€ 숫자λ₯Ό μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν•΄μ•Ό ν•˜λŠ” λΆ€λΆ„μ—μ„œ sort()λ₯Ό μ‚¬μš©ν–ˆλ”λ‹ˆ μˆ«μžκ°€ μ œλŒ€λ‘œ μ •λ ¬λ˜μ§€ μ•Šκ³  μ•„μŠ€ν‚€ 문자 κΈ°μ€€μœΌλ‘œ μ •λ ¬λ˜μ—ˆλ‹€.
ꡬ글링을 ν•΄λ³Έ κ²°κ³Ό sort() ν•¨μˆ˜ μ•ˆμ— λ‹€λ₯Έ 읡λͺ…μ˜ ν•¨μˆ˜λ₯Ό μ¨μ„œ 값을 λ¦¬ν„΄ν•˜λŠ”λ°β€¦ μ†”μ§νžˆ 원리λ₯Ό μ΄ν•΄ν•˜μ§€ λͺ»ν•˜κ³  κ·Έλƒ₯ μ•”κΈ°ν•œ ν›„ μ μš©ν•˜κΈ°λ§Œ ν–ˆλ‹€.
ν•˜μ§€λ§Œ κ³„μ†ν•΄μ„œ 숫자λ₯Ό μ •λ ¬ν•΄μ•Ό ν•˜λŠ” 상황듀이 μƒκΈ°λ©΄μ„œ λŒ€μ²΄ μ™œ sort() μ•ˆμ— 또 λ‹€λ₯Έ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•΄μ„œ 정렬을 ν•΄μ•Ό ν•˜λŠ”μ§€ κ·Έ 원리가 κΆκΈˆν–ˆλ‹€.

πŸ“Β sort() κΈ°λ³Έ ꡬ쑰

: λ¨Όμ € sort()λŠ” λ°°μ—΄μ˜ μš”μ†Œλ₯Ό μ •λ ¬ν•  λ•Œ μ‚¬μš©ν•˜λŠ” ν•¨μˆ˜λ‹€.
곡식 λ¬Έμ„œμ— λ”°λ₯΄λ©΄ κΈ°λ³Έ ꡬ문은 μ•„λž˜μ™€ κ°™μ•˜λ‹€.

arr.sort([compareFunction]) β†’ λ‹¨μˆœνžˆ sort() ꡬ쑰인 쀄 μ•Œμ•˜μ§€λ§Œ νŠΉμ΄ν•œ λ§€κ°œλ³€μˆ˜κ°€ μ‘΄μž¬ν–ˆλ‹€.

  • [compareFunction] λŠ” λ§€κ°œλ³€μˆ˜κ°€ ν•„μˆ˜κ°€ μ•„λ‹Œ, 상황에 따라 μƒλž΅λ„ κ°€λŠ₯ν•˜λ‹€λŠ” 의미!
    ⭐️ 즉, λ§€κ°œλ³€μˆ˜λ₯Ό ν•„μˆ˜μ μœΌλ‘œ μ‚¬μš©ν•΄μ•Ό ν•˜λŠ” 것은 μ•„λ‹ˆμ§€λ§Œ 상황에 λ”°λΌμ„œ λ§€κ°œλ³€μˆ˜κ°€ ν•„μš”ν•˜λ‹€λŠ” 것이닀.

πŸ“Β sort()κΈ°λ³Έ μ •λ ¬

ν•˜μ§€λ§Œ μ€‘μš”ν•œ 것은 이 λ§€κ°œλ³€μˆ˜λ₯Ό μƒλž΅ν•˜κ²Œ λœλ‹€λ©΄ λ°°μ—΄μ˜ μš”μ†Œλ“€μ€ μ•„μŠ€ν‚€ 문자 κΈ°μ€€μ˜ μ˜€λ¦„μ°¨μˆœμœΌλ‘œ 정렬이 λœλ‹€.

arr.sort() β†’ λ‹€μŒκ³Ό 같이 μ•„μ£Ό 일반적인 ꡬ쑰둜 μ‚¬μš©ν•˜κ²Œ 되면 ν•΄λ‹Ή 배열은 문자 κΈ°μ€€ μ˜€λ¦„μ°¨μˆœμœΌλ‘œ 정렬이 λœλ‹€λŠ” 것!

λ§€κ°œλ³€μˆ˜λ₯Ό μƒλž΅ν•˜κ³  μˆ«μžκ°€ λ‹΄κΈ΄ 배열을 μ •λ ¬ν•˜κ²Œ 되면 숫자의 ν¬κΈ°λŒ€λ‘œ 정렬이 λ˜μ§€ μ•Šμ•„μ„œ μ›ν•˜λŠ” 결과값을 얻지 λͺ»ν•˜κ²Œ 된 것!
β‡’ 즉, 숫자 κΈ°μ€€μœΌλ‘œ 정렬을 ν•˜κΈ° μœ„ν•΄μ„œλŠ” λ§€κ°œλ³€μˆ˜λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.

πŸ“Β μˆ«μž νƒ€μž… κΈ°μ€€μœΌλ‘œ μ •λ ¬

β†’ 숫자 νƒ€μž…μ„ κΈ°μ€€μœΌλ‘œ μ •λ ¬ν•˜κΈ° μœ„ν•΄μ„œλŠ” compareFunction 선언을 ν•΄μ•Ό ν•œλ‹€.

[ ν™œμš© 방법 ]

let array = [2, 23, 4, 67, 120]
function compare(a, b){
	return a - b
}
array.sort(compare)

λ°°μ—΄μ˜ μš”μ†Œλ“€μ„ ν•˜λ‚˜μ”© 비ꡐ할 수 μžˆλ„λ‘ ν•˜λŠ” ν•¨μˆ˜ compare을 μ„ μ–Έν•œ 후에 sort ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜λ‘œ λ„£μ–΄μ€€λ‹€.
즉, sort ν•¨μˆ˜λ₯Ό compare κΈ°μ€€μœΌλ‘œ μ •λ ¬ν•œλ‹€λŠ” 의미둜 μ΄ν•΄ν•˜λ©΄ 될 것 κ°™λ‹€!

πŸ‘€ 원리 μ΄ν•΄ν•˜κΈ°
λ¬Έμ œλŠ”, compare ν•¨μˆ˜μ˜ 원리가 무엇인지 κΆκΈˆν–ˆλ‹€λŠ” 것…!
compare ν•¨μˆ˜λŠ” a와 bλ₯Ό λ§€κ°œλ³€μˆ˜λ‘œ λ°›κ³  a, b λ§€κ°œλ³€μˆ˜μ— array의 μš”μ†Œλ“€μ„ ν•˜λ‚˜μ”© λŒ€μž…ν•΄ λΉ„κ΅ν•œλ‹€.
λ§Œμ•½ aκ°€ 2, bκ°€ 23라면 a-bλŠ” 2-23둜 결과값이 -21 μŒμˆ˜κ°€ λœλ‹€.
μ΄λ•Œ μ—°μ‚°μ˜ κ²°κ³Όκ°€ 음수라면 2와 23의 μœ„μΉ˜λ₯Ό κ·ΈλŒ€λ‘œ λ‘”λ‹€.
후에 λ˜λ‹€μ‹œ λ‹€λ₯Έ μš”μ†Œλ“€λ„ λ‹€μ‹œ 비ꡐλ₯Ό μ‹œμž‘ν•œλ‹€.
λ‹€μŒμœΌλ‘œλŠ” aκ°€ 23, bκ°€ 4라면 23 - 4둜 결과값이 19 μ–‘μˆ˜κ°€ λœλ‹€.
μ΄λ•Œ μ—°μ‚°μ˜ κ²°κ³Όκ°€ μ–‘μˆ˜λΌλ©΄ 23κ³Ό 4의 μœ„μΉ˜λ₯Ό 바꿔버린닀.
23 β†’ 4 μ—μ„œ 4 β†’ 23 μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μˆœμ„œλ₯Ό λ°”κΏ”λ²„λ¦¬λŠ” 것이닀.

  • λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ 정렬을 ν•˜κΈ° μœ„ν•΄μ„œλŠ” a - bκ°€ μ•„λ‹Œ b - aλ₯Ό λ°˜ν™˜ν•˜λ©΄ λœλ‹€.

μœ„μ˜ μ›λ¦¬λ‘œ μ•Œ 수 μžˆλŠ” 것은, 읡λͺ…μ˜ ν•¨μˆ˜ compare은 λ°°μ—΄μ˜ μ›μ†Œλ“€μ„ ν•˜λ‚˜μ”© λΉ„κ΅ν•΄μ„œ μœ„μΉ˜λ₯Ό λ³€κ²½ν•˜λŠ” 역할을 ν•œλ‹€λŠ” 것이닀.


μ™„λ²½ν•œ μ΄ν•΄λŠ” 아닐 수 μžˆμ§€λ§Œ κ·Έλž˜λ„ μ–΄λŠ 정도 원리λ₯Ό μ•Œκ³  λ‚˜λ‹ˆ 더 λ‹€μ–‘ν•˜κ²Œ sort ν•¨μˆ˜λ₯Ό ν™œμš©ν•  수 μžˆμ„ 것 κ°™λ‹€!

βœ…Β ES6λΆ€ν„° λ„μž…λœ ν™”μ‚΄ν‘œ ν•¨μˆ˜ ν‘œν˜„λ²•

array.sort((a, b) => a - b); // μ˜€λ¦„μ°¨μˆœ

μ°Έκ³  : https://noirstar.tistory.com/359
https://brunch.co.kr/@swimjiy/12

profile
🏠 λΈ”λ‘œκ·Έ 이전 쀑 β†’ https://medium.com/@sebinndev

0개의 λŒ“κΈ€