JavaScript 배열에서 최댓값과 최솟값을 알아내는 다양한 방법들에 대해 알아보자 ❗
반복문을 순회하면서 모든 원소들끼리 비교하여 최댓값과 최솟값을 찾을 수 있다
<script>
function max(arr) {
let max = arr[0];
for (let i of arr) {
if (i > max) max = i
}
return max;
}
function min(arr) {
let min = arr[0];
for (let i of arr) {
if (i < min) min = i
}
return min;
}
const arr = [7, 2, 3, 4, 3, 4, 8]
console.log(max(arr));
console.log(min(arr));
</script>
JavaScript 내장 객체 Math
를 이용해서 최댓값과 최솟값을 구할 수 있다
max( )
, min( )
함수는 입력값으로 받은 0개 이상의 숫자 중 가장 크거나 작은 숫자를 반환한다
아무 값도 전달되지 않으면 -Infinity
를 반환하고, 전달된 값이 숫자로 변환되지 않는 경우 NaN
를 반환한다
따라서 배열 전체를 전달하는 경우에는 NaN
을 반환한다
배열을 인자로 전달하기 위해서는, spread 연산자를 통해 배열의 요소들을 풀어서 전달하면 된다
spread연산자는 ES6에 새롭게 도입된 문법😊
<script>
function max(arr) {
return Math.max(...arr);
}
function min(arr) {
return Math.min(...arr);
}
const arr = [7, 2, 3, 4, 3, 4, 8]
console.log(max(arr));
console.log(min(arr));
console.log(Math.max());
console.log(Math.min(arr));
</script>
내장함수와 함께 apply( )
메소드를 사용했다❗
func.apply(thisArg, [argsArray]);
<script>
const arr = [7, 2, 3, 4, 3, 4, 8]
console.log(Math.max.apply(null, arr));
console.log(Math.min.apply(null, arr));
</script>
주어진 배열을 sort( )
내장 함수를 이용해서 정렬한다
정렬된 배열의 양 끝쪽 요소가 최댓값과 최솟값이 된다
❗주의❗
sort( )
함수는 원래의 배열이 정렬된다
<script>
const arr = [7, 2, 3, 4, 3, 4, 8]
let min, max;
arr.sort((a, b) => a - b) // 오름차순 정렬
/* arr.sort((a, b) => b - a) 내림차순 정렬 */
max = arr[arr.length - 1]
min = arr[0]
console.log(`max: ${max}, min: ${min}`);
</script>
반복문을 사용하는 방법과 Math
의 내장 함수를 사용하는 방법은 성능이 비슷하다
단, Math
의 내장 함수는 배열의 요소가 많을 경우 에러가 발생한다😥
따라서, Math.max
함수와 Math.min
함수를 사용하는 것이 가장 바람직하지만 배열의 크기가 너무 큰 경우에는 반복문을 사용하는 것을 추천한다😊