JavaScript

[JavaScript] 배열(1차원 배열, 2차원 배열) sort() 정렬 방법

cob 2022. 12. 12. 10:14

 

sort()

 

 

sort() 란?
JavaScript에 내장되어있는 함수로 배열을 정렬하고 싶을 경우 사용한다. (오름차순, 내림차순)

 

 

 

/* sort() 형식 */
function callback() { ... }

배열.sort();
배열.sort(callback);
  • sort의 인자(Argument)는 전달해도 되고, 안 해도 된다.

 

 

 

 


1. 1차원 배열 정렬 방법

const arr1 = [2, 1, 3];
const arr2 = ['banana', 'apple', 'orange']

arr1.sort(); // [1, 2, 3]

arr2.sort(); // ['apple', 'banana', 'orange']
  • sort함수에 파라미터가 없으면, 유니코드 순서에 따라서 오름차순으로 정렬된다.
  • 숫자인 경우 배열 요소를 문자열로 캐스팅하고 변환된 문자열을 비교하여 순서를 결정한다.
  • 배열의 요소가 undefined인 경우에는 문자열로 변환되지 않고, 배열의 맨 끝으로 정렬된다.

 

1-1) 콜백 함수를 통한 정렬

const arr = [2, 1, 3, 10];

// 유니코드 정렬
arr.sort(); // [1, 10, 2, 3]

// 오름차순 정렬
arr.sort((a, b) => a-b) // [1, 2, 3, 10]

// 내림차순 정렬
arr.sort((a,b) => b-a) // [10, 3, 2, 1]
  • 유니코드 순서로 오름차순 정렬이기 때문에 콜백함수로 return값을 주어야 원하는 결과를 얻을 수 있다.
  • 두 숫자의 차가 양수, 음수를 판단하여 정렬할 수 있다.

 

 

 


2. 2차원 배열 정렬 방법

const arr = [[6, 6], [2, 2], [4, 3], [4, 5], [10, 3]];
 
// 오름차순
arr.sort((a, b) => a[0] + a[1] - (b[0] + b[1]));
 console.log(arr);
// [[ 2, 2 ], [ 4, 3 ], [ 4, 5 ], [ 6, 6 ], [ 10, 3 ]]
 
 
// 내림차순
arr.sort((a, b) => b[0] + b[1] - (a[0] + a[1]));
 console.log(arr);
// [[ 10, 3 ], [ 6, 6 ], [ 4, 5 ], [ 4, 3 ], [ 2, 2 ]]
 
 
// arr[0]이 같을 경우 arr[1] 기준으로 오름차순 정렬
arr.sort((a, b) => {
  if (a[0] === b[0]) {
    return a[1] - b[1];
  } else {
    return a[0] - b[0];
  };
});
 
console.log(arr)
// [[ 2, 2 ], [ 4, 3 ], [ 4, 5 ], [ 6, 6 ], [ 10, 3 ]]

 

 

 

2-1) 2차원 배열 문자 정렬 방법

let str = [["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]];
let strSort = str.sort((a, b) => {
    if (a[0] === b[0]) {
        return a[1] < b[1] ? -1 : a[1] > b[1] ? 1 : 0; 
    } else {
        return -1;
    };
});

 

반응형