JavaScript 배열 정렬

sort() 이 메서드는 가장 강력한 배열 메서드 중 하나입니다.

배열 정렬

sort() 알파벳 순서로 배열을 정렬하는 방법:

예제

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();            // fruits 배열의 요소를 정렬

직접 테스트해 보세요

배열을 반전

reverse() 메서드는 배열의 요소를 반전합니다。

그래서 이를 사용하여 배열을 내림차순으로 정렬할 수 있습니다:

예제

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();            // fruits 배열의 요소를 정렬
fruits.reverse();         // 요소 순서를 반전

직접 테스트해 보세요

숫자 정렬

기본적으로,sort() 함수는문자열순서를 따라 값을 정렬합니다。

이 함수는 문자열에 적합합니다("Apple"는 "Banana"보다 앞에 위치합니다).

그러나 숫자가 문자로 정렬될 때 "25"는 "100"보다 크며, "2"는 "1"보다 큽니다.

따라서,sort() 메서드는 숫자를 정렬할 때 잘못된 결과를 생성합니다。

우리는비율 함수이 문제를 수정하기 위해:

예제

내림차순 정렬:
오름차순 정렬: 

직접 테스트해 보세요

같은 기술을 사용하여 배열을 내림차순 정렬합니다:

예제

내림차순 정렬:
var points = [40, 100, 1, 5, 25, 10]; 

직접 테스트해 보세요

비율 함수

비교 함수의 목적은 다른 정렬 순서를 정의하는 것입니다。

비교 함수는 매개변수에 따라 음수, 0 또는 양수를 반환해야 합니다:

function(a, b){return a-b}

당신이 sort() 함수는 값을 비교 함수에 보내고, 반환된 값(음수, 0 또는 양수)에 따라 값을 정렬합니다。

예제:

40과 100을 비교할 때,sort() 이 메서드는 function(40,100)를 호출합니다。

이 함수는 40-100을 계산한 후 -60(음수)을 반환합니다。

정렬 함수는 40을 100보다 낮은 값으로 정렬합니다。

다음 코드 스니프트를 사용하여 숫자와 문자열 정렬을 테스트할 수 있습니다:

<button onclick="myFunction1()">알파벳 순서로 정렬</button>
<button onclick="myFunction2()">숫자 순서로 정렬</button>
<p id="demo"></p>
<script>
내림차순 정렬:
document.getElementById("demo").innerHTML = points;
function myFunction1() {
		points.sort();
		document.getElementById("demo").innerHTML  = points;
}
function myFunction2() {
		points.sort(function(a, b){return a - b});
		document.getElementById("demo").innerHTML = points;
}
</script>

직접 테스트해 보세요

以随机顺序排序数组

예제

내림차순 정렬:
배열을 무작위 순으로 정렬합니다 

직접 테스트해 보세요

points.sort(function(a, b){return 0.5 - Math.random()});

최대(또는 최소) 배열 값 찾기

JavaScript는 배열에서 가장 큰 값이나 가장 작은 값을 찾는 내장 함수를 제공하지 않습니다。

그러나 배열을 정렬한 후에는 최대나 최소 값을 얻기 위해 인덱스를 사용할 수 있습니다。

예제

내림차순 정렬:
오름차순 정렬:
points.sort(function(a, b){return a - b});
// 지금 points[0]은 최소 값을 포함합니다

직접 테스트해 보세요

// points[points.length-1]은 최대 값을 포함합니다

예제

내림차순 정렬:
var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b - a});
// 지금 points[0]은 최대 값을 포함합니다

직접 테스트해 보세요

// points[points.length-1]은 최소 값을 포함합니다

만약 단순히 가장 높은 값이나 가장 낮은 값을 찾는다면, 전체 배열을 정렬하는 것은 매우 비효율적인 방법입니다。

배열에 Math.min()을 사용할 수 있습니다 배열에 Math.max()을 사용할 수 있습니다 Math.max.apply

예제

function myArrayMax(arr) {
    배열에서 가장 높은 값을 찾기 위해 사용됩니다:
}

직접 테스트해 보세요

return Math.max.apply(null, arr); равен Math.max.apply([1, 2, 3])

Math.max(1, 2, 3)

배열에 Math.min()을 사용할 수 있습니다 Math.min.apply 배열에서 가장 낮은 값을 찾기 위해 사용됩니다:

예제

function myArrayMin(arr) {
    return Math.min.apply(null, arr);
}

직접 테스트해 보세요

Math.min.apply([1, 2, 3]) равен Math.min(1, 2, 3)

제 Min/Max JavaScript 메서드

가장 빠른 해결 방법은 "직접" 방법을 사용하는 것입니다。

이 함수는 배열을 순회하며 발견한 가장 높은 값을 각 값과 비교합니다:

실例(최대 값 찾기)

function myArrayMax(arr) {
    var len = arr.length
    var max = -Infinity;
    while (len--) {
        if (arr[len] > max) {
            max = arr[len];
        }
    }
    return max;
}

직접 테스트해 보세요

이 함수는 배열을 순회하며 발견한 가장 낮은 값을 각 값과 비교합니다:

실例(최소 값 찾기)

function myArrayMin(arr) {
    var len = arr.length
    var min = Infinity;
    while (len--) {
        if (arr[len] < min) {
            min = arr[len];
        }
    }
    return min;
}

직접 테스트해 보세요

객체 배열 정렬

JavaScript 배열은 자주 객체를 포함합니다:

예제

var cars = [
{type:"Volvo", year:2016},
{type:"Saab", year:2001},
{type:"BMW", year:2010}];

객체가 다른 데이터 타입의 속성을 가진 경우에도sort() 이 메서드는 배열을 정렬하는 데도 사용할 수 있습니다.

해결책은 비교 함수를 사용하여 속성 값을 비교하는 것입니다:

예제

cars.sort(function(a, b){return a.year - b.year});

직접 테스트해 보세요

문자열 속성을 비교하는 것은 약간 복잡합니다:

예제

cars.sort(function(a, b){
	  var x = a.type.toLowerCase();
	  var y = b.type.toLowerCase();
	  if (x < y) {return -1;}
	  if (x > y) {return 1;}
	  return 0;
});

직접 테스트해 보세요