Javascript

배열의 최대값 최소값 찾기

하루 2022. 2. 5. 23:24

Math 함수

Math.max.apply(null, 배열) // 최대값
Math.min.apply(null, 배열) // 최소값

주의! 배열 내에 비교 불가능한 값이 있다면 결과는 NaN으로 나온다.

 

대부분의 경우는 Math 객체를 이용해도 결과를 얻을 수 있지만 큰 배열 (~10^7 elements) 정도 되면, Math.min 과 Math.max 를 사용할 경우, “RangeError: Maximum call stack size exceeded” 오류가 나게 된다.

Math 객체를 이용하지 않고 더 메모리 소모도 적은 reduce 함수를 이용한 방법도 있다.

 

reduce 함수

let array = [1, 10, 5, 11, 2]

// 최대값
let max = array.reduce((previous, current) => {
	return previous > current ? previous : current;
});

// 최소값
let min = array.reduce((previous, current) => {
	return previous > current ? current : previous;
});

 

slice / sort 활용

let min = [1, 20, 11, 88, 3].slice(0).sort((a,b) => a > b)[0];
let min = [1, 20, 11, 88, 3].slice(0).sort((a,b) => a < b)[0];

['b', 'a', 'd', 'c'].slice(0).sort()[0];  // 'a'
['b', 'a', 'd', 'c'].slice(0).sort().reverse()[0];  // 'd'
['b', 'a', 'd', 'c'].slice(0).sort((a,b) => a > b)[0];  // 'a'
['b', 'a', 'd', 'c'].slice(0).sort((a,b) => a < b)[0];  // 'd'

 

 

 

출처/참고