관리 메뉴

Hey Tech

[JavaScript] μ •λ ¬ ν•¨μˆ˜(reverse, sort)에 λŒ€ν•΄ μ•Œμ•„λ³΄μž! λ³Έλ¬Έ

SW 개발/Vanilla JS

[JavaScript] μ •λ ¬ ν•¨μˆ˜(reverse, sort)에 λŒ€ν•΄ μ•Œμ•„λ³΄μž!

Tony Park (ν† λ‹ˆ) 2021. 12. 1. 15:49
728x90
λ°˜μ‘ν˜•

πŸ’‘ λͺ©ν‘œ

JavaScriptμ—μ„œ 배열을 μ •λ ¬ν•˜λŠ” 방법에 λŒ€ν•΄ ν•™μŠ΅ν•œλ‹€.

1.  *Reverse ν•¨μˆ˜: μ›μ†Œ λ°˜λŒ€λ‘œ λ‚˜μ—΄

let arr1 = [1, 2, 3, 4];

μœ„μ™€ 같이 λ°°μ—΄ 객체λ₯Ό μƒμ„±ν•˜λŠ” λ™μ‹œμ— μ΄ˆκΈ°ν™”ν–ˆμŠ΅λ‹ˆλ‹€.

let arrReverse = arr1.reverse();
console.log(arr1); // [ 4, 3, 2, 1 ]
console.log(arrReverse); [ 4, 3, 2, 1 ]

Reverse ν•¨μˆ˜λŠ” λ°°μ—΄μ˜ μ›μ†Œλ₯Ό 거꾸둜 λ‚˜μ—΄ν•˜λ©° 원본 λ°μ΄ν„°κΉŒμ§€ μˆ˜μ •ν•©λ‹ˆλ‹€.

즉, reverse ν•¨μˆ˜μ˜ λ°˜ν™˜λœ λ°μ΄ν„°λΏλ§Œ μ•„λ‹ˆλΌ 원본 데이터인 λ°°μ—΄ arr의 μ›μ†Œ μ—­μ‹œ λ°˜λŒ€λ‘œ λ‚˜μ—΄λ©λ‹ˆλ‹€.

2.  sort ν•¨μˆ˜: μ •λ ¬ ν•¨μˆ˜ μ •μ˜ ν•„μš”

2.1.  λ°°μ—΄ μ •λ ¬

let arr2  = [103, 273, 32, 52];

μœ„μ™€ 같이 λ°°μ—΄ 객체λ₯Ό μƒμ„±ν•˜λŠ” λ™μ‹œμ— μ΄ˆκΈ°ν™”ν–ˆμŠ΅λ‹ˆλ‹€.

function sortArray(a, b){
    // >: μ˜€λ¦„μ°¨μˆœ μ •λ ¬(a -b)
    // <: λ‚΄λ¦Όμ°¨μˆœ μ •λ ¬(b- a)
    return a -b;
}

μœ„μ™€ 같이 정렬을 μœ„ν•œ ν•¨μˆ˜λ₯Ό λ”°λ‘œ μ •μ˜ν•˜κ³  이λ₯Ό sort ν•¨μˆ˜μ— λ„˜κ²¨μ£Όμ–΄μ•Ό μ •ν™•ν•˜κ²Œ 정렬이 κ°€λŠ₯ν•©λ‹ˆλ‹€.

μ „λ‹¬μΈμž a, bκ°€ μžˆμ„ λ•Œ, μ˜€λ¦„μ°¨μˆœ 정렬을 μ›ν•˜λ©΄ λ°˜ν™˜κ°’μ— a-bλ₯Ό, λ‚΄λ¦Όμ°¨μˆœ 정렬을 μ›ν•˜λ©΄ b-aλ₯Ό μž…λ ₯ν•©λ‹ˆλ‹€.

arr2.sort(sortArray);
console.log("arr2: ", arr2); // 32, 52, 103, 273

2.2.  객체 μ •λ ¬

let arr3 = [
    {
        age: 31,
        name: 'tony'
    }, 

    {
        age: 19,
        name: 'paul'
    },

    {
        age: 25,
        name: 'john'
    },
]

μœ„μ™€ 같이 객체λ₯Ό μƒμ„±ν•˜λŠ” λ™μ‹œμ— μ΄ˆκΈ°ν™”ν–ˆμŠ΅λ‹ˆλ‹€.

function sortObject(a, b){
    return a.age - b.age;
}

객체 λ‚΄ νŠΉμ • key 값에 따라 μ •λ ¬ν•˜λŠ” ν•¨μˆ˜ μ˜ˆμ‹œμž…λ‹ˆλ‹€.

이처럼 μ •λ ¬ μ‹œ ν•¨μˆ˜λ₯Ό ν™œμš©ν•˜λ©΄ 상황에 맞게 배열을 μ •λ ¬ν•  수 μžˆλ‹€λŠ” μž₯점이 μžˆμŠ΅λ‹ˆλ‹€.

arr3.sort(sortObject);
console.log(arr3);

κ²°κ³Όλ₯Ό 좜λ ₯ν•˜λ©΄ μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

[
  { age: 19, name: 'paul' },     
  { age: 25, name: 'john' },     
  { age: 31, name: 'tony' }   
]

(Optional) κ·Έλ ‡λ‹€λ©΄ sort ν•¨μˆ˜λ§Œ μ‚¬μš©ν•˜λ©΄ μ–΄λ–»κ²Œ 될까?

λ§Œμ•½ μžλ°”λ‚˜ 파이썬처럼 sort ν•¨μˆ˜λ§Œ μ‚¬μš©ν•˜μ—¬ μ •λ ¬ν•˜λ©΄ μ–΄λ–»κ²Œ λ κΉŒμš”?

잘λͺ»λœ μ •λ ¬ μ˜ˆμ‹œ1

let arr4 = [80, 20, 10, 15];
arr4.sort();
console.log(arr4); // [10, 15, 20, 80]

μœ„μ— μ˜ˆμ‹œ μ½”λ“œμ—μ„œ κ²°κ΄κ°’λ§Œ 보면 정렬이 μ •ν™•ν•˜κ²Œ 된 κ²ƒμ²˜λŸΌ λ³΄μž…λ‹ˆλ‹€.

ν•˜μ§€λ§Œ μ΄λŠ” ν‹€λ¦° μ˜ˆμ œμž…λ‹ˆλ‹€.

λ‹€μŒ 예제λ₯Ό 계속 μ‚΄νŽ΄λ³΄μ£ .

잘λͺ»λœ μ •λ ¬ μ˜ˆμ‹œ2

let arr5 = [103, 273, 32, 52];
arr5.sort();
console.log(arr5); // [103, 273, 32, 52]

μ•žμ„  μ˜ˆμ œμ—μ„œλŠ” μ˜€λ¦„μ°¨μˆœμœΌλ‘œ 정렬이 잘 λ˜μ—ˆλŠ”λ° 이번 μ˜ˆμ œμ—μ„œλŠ” 정렬이 μˆ˜ν–‰λ˜μ§€ μ•Šμ•˜μ£ .

사싀은 정렬이 된 μƒνƒœμž…λ‹ˆλ‹€.

sort ν•¨μˆ˜λŠ” μ›μ†Œλ₯Ό λ¬Έμžμ—΄λ‘œ μ·¨κΈ‰ν•˜κ³  맨 μ•ž κΈ€μžλΆ€ν„° ν•˜λ‚˜μ”© λΉ„κ΅ν•˜μ—¬ μ •λ ¬ν•©λ‹ˆλ‹€.

즉, 이번 1번 μ˜ˆμ‹œμ—μ„œλŠ” 맨 μ•ž λ¬Έμžμ—΄ 1, 2, 8 순으둜 μ›μ†Œλ₯Ό μ •λ ¬ν•˜κ³ ,

10κ³Ό 15λŠ” μ›μ†Œλ§ˆλ‹€ 두 번째 λ¬Έμžμ—΄μΈ 0κ³Ό 5λ₯Ό λΉ„κ΅ν•˜μ—¬ μ •λ ¬ν•©λ‹ˆλ‹€.

이처럼 sort ν•¨μˆ˜λ§Œ μ‚¬μš©ν•˜λ©΄ 숫자의 ν¬κΈ°λΌλŠ” λ§₯락 정보λ₯Ό λ°˜μ˜ν•˜μ§€ λͺ» ν•©λ‹ˆλ‹€.

λ”°λΌμ„œ μ •ν™•ν•œ 정렬을 μœ„ν•΄μ„œλŠ” sort ν•¨μˆ˜μ™€ ν•¨κ»˜ μ μ ˆν•œ ν•¨μˆ˜λ₯Ό μΆ”κ°€λ‘œ ν™œμš©ν•΄μ•Ό ν•©λ‹ˆλ‹€.


 

ν¬μŠ€νŒ… λ‚΄μš©μ— 였λ₯˜κ°€ μžˆλ‹€λ©΄ μ•„λž˜μ— λŒ“κΈ€ λ‚¨κ²¨μ£Όμ„Έμš”!

그럼 μ˜€λŠ˜λ„ 즐겁고 멋진 λ§Œλ“œμ‹œκΈΈ λ°”λžλ‹ˆλ‹€.

κ³ λ§™μŠ΅λ‹ˆλ‹€ :-)

728x90
λ°˜μ‘ν˜•