정렬되지 않은 순서로 숫자를 포함하는 JavaScript의 숫자 배열이 있습니다. 우리의 임무는 이 숫자 배열을 받아 배열의 상위 두 요소(배열의 가장 큰 두 요소)인 두 요소의 배열을 반환하는 함수를 작성하는 것입니다.
우리는 이것을 한 번에 수행해야 합니다. 즉, for 루프를 하나만 사용하거나 ES6 기능을 사용하는 경우와 같이 선형 시간에 이 메서드를 실행해야 합니다. 복잡성.
이제 Array.prototype.reduce() 메서드를 사용하여 코드를 작성해 보겠습니다. -
예시
const arr = [23, 65, 67, 23, 2, 6, 87, 23, 45, 65, 3, 234, 3]; const topTwo = arr => { if(arr.length < 2){ return false; }; return arr.reduce((acc, val) => { if(val > acc[0]){ let t = acc[0]; acc[0] = val; acc[1] = t; }else if(val > acc[1]){ acc[1] = val; }; return acc; }, [-Infinity, -Infinity]); }; console.log(topTwo(arr));
출력
콘솔의 출력은 다음과 같습니다. -
[ 234, 87 ]