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; });