javascript sort

    

js에 sort함수는 python 처럼 key로 sort하기


JavaScript의 `sort` 함수는 Python의 `sort` 함수와 같이 직접적으로 `key` 인자를 지원하지 않습니다. 그러나 JavaScript에서는 `sort` 함수에 비교 함수를 제공하여 객체 배열을 속성 값에 따라 정렬할 수 있습니다. 이 비교 함수는 두 요소를 인자로 받아서, 첫 번째 요소가 두 번째 요소보다 작을 경우 음수를, 같을 경우 0을, 큰 경우 양수를 반환해야 합니다. 이를 통해 Python의 `key` 인자와 유사한 기능을 구현할 수 있습니다.


예를 들어, 객체의 특정 속성을 기준으로 배열을 정렬하려면 다음과 같이 할 수 있습니다:


```javascript

let items = [

    { name: "Banana", quantity: 2 },

    { name: "Apple", quantity: 10 },

    { name: "Orange", quantity: 5 }

];


// name 속성을 기준으로 오름차순 정렬

items.sort((a, b) => a.name.localeCompare(b.name));


// quantity 속성을 기준으로 오름차순 정렬

items.sort((a, b) => a.quantity - b.quantity);

```


여기서 `localeCompare`는 문자열 비교를 위해 사용되며, 문자열 속성을 기준으로 배열을 정렬할 때 유용합니다. 숫자 속성의 경우 간단히 두 값을 빼서 정렬 순서를 결정할 수 있습니다.


따라서 JavaScript에서는 `sort` 함수의 비교 함수를 적절히 정의하여 Python의 `key` 인자와 비슷한 기능을 구현할 수 있습니다.


좀 더 단순화해서 설명해볼게요. JavaScript에서 배열을 정렬할 때 `sort()` 함수를 사용하는데, 이 함수 안에 또 다른 함수를 넣어서 "어떻게" 정렬할지 정의할 수 있어요. 이 내부 함수를 "비교 함수"라고 하고, 이를 통해 Python의 `sort()` 함수에서 `key` 인자를 사용하는 것과 유사한 효과를 낼 수 있어요.


비교 함수는 두 개의 인자를 받습니다 (보통 `a`와 `b`라고 하죠) 그리고:

- `a`가 `b`보다 "작다"고 판단되면, **음수**를 반환합니다.

- `a`와 `b`가 "같다"고 판단되면, **0**을 반환합니다.

- `a`가 `b`보다 "크다"고 판단되면, **양수**를 반환합니다.


### 예시 1: 숫자 정렬하기

숫자로 이루어진 배열을 오름차순으로 정렬해봅시다.


```javascript

let numbers = [10, 5, 2, 8];

numbers.sort((a, b) => a - b); // 오름차순 정렬

console.log(numbers); // [2, 5, 8, 10]

```


### 예시 2: 객체 배열 정렬하기

객체로 이루어진 배열을, 객체의 특정 속성 값으로 정렬해봅시다.


```javascript

let items = [

    { name: "Banana", quantity: 2 },

    { name: "Apple", quantity: 10 },

    { name: "Orange", quantity: 5 }

];


// 이름(name)으로 오름차순 정렬

items.sort((a, b) => a.name.localeCompare(b.name));

console.log(items);

// 결과: [{ name: "Apple", quantity: 10 }, { name: "Banana", quantity: 2 }, { name: "Orange", quantity: 5 }]


// 수량(quantity)으로 오름차순 정렬

items.sort((a, b) => a.quantity - b.quantity);

console.log(items);

// 결과: [{ name: "Banana", quantity: 2 }, { name: "Orange", quantity: 5 }, { name: "Apple", quantity: 10 }]

```


이런 식으로, 비교 함수를 사용해 JavaScript에서도 Python의 `sort()` 함수에서 `key`를 사용하는 것처럼 다양한 기준으로 배열을 정렬할 수 있어요.





댓글

이 블로그의 인기 게시물

STUDY

vue

Capacitor 웹 기반 애플리케이션을 네이티브 앱으로 감싸고, 네이티브 기능에 접근할 수 있게 해주는 프레임워크