2016-07-07 4 views
1

배열에서 가장 작은 값과 가장 큰 값을 찾고 두 번째로 큰 값과 두 번째 값이 작은 알고리즘을 작성하려고합니다. 이 작동하지 않는 것배열에서 최소 및 최대 값 찾기 (JS)

numbers = [2, 4, 9, 2, 0, 16, 24] 

var largest = numbers[0]; 
var smallest = numbers[0]; 

for (var i = 1; i < numbers.length; i++) { 

    if (numbers[i] > largest) { 
     largest = numbers[i]; 
    } 
    else if(numbers[i] < smallest) { 
     smallest = numbers[i]; 
    } 

    console.log(largest); 
    console.log(smallest); 

} 

그냥 내가 잘못 뭐하는 거지 ... 배열을 출력 :

나는 다음과 같이 시도?

+3

논리가 가장 크고 작은 숫자를 찾으면 좋습니다. 루프 외부에서'console.log' 문을 옮기면됩니다. –

+0

오우 와우, 어떻게 보지 못했지 ... 얼마나 당혹 스럽습니까. 두 번째로 큰 것과 두 번째로 작은 것에 대한 제안? – MadCatm2

+0

"두 번째로 큰 것과 두 번째로 작은 것에 대한 제안?" --- 정렬 된 N 개의 요소 배열을 유지하는 함수를 만듭니다. 그런 다음'numbers' 배열로 피드하십시오. – zerkms

답변

1

for 루프 외부에서 console.log 문을 이동하십시오.

2

가장 쉬운 방법은 배열을 정렬 한 다음 처음 두 요소와 마지막 두 요소를 반환하는 것입니다. slice()를 사용

정렬되는 배열 자체를 방지 :

var numbers = [2, 4, 9, 2, 0, 16, 24]; 
 

 
var sorted = numbers.slice().sort(function(a, b) { 
 
    return a - b; 
 
}); 
 

 
var smallest = sorted[0],      
 
    secondSmallest = sorted[1],     
 
    secondLargest = sorted[sorted.length - 2], 
 
    largest = sorted[sorted.length - 1]; 
 

 
console.log('Smallest: ' + smallest); 
 
console.log('Second Smallest: ' + secondSmallest); 
 
console.log('Second Largest: ' + secondLargest); 
 
console.log('Largest: ' + largest);
(씨 라마에 의해 편집) Roatin Marth으로

0

이 게시물에서 말했다 : https://stackoverflow.com/a/6102340/6074388,

당신은 할 수 있습니다 배열이 아래처럼 math.min과 math.max를 사용하도록하십시오 :

Array.prototype.max = function() { 
    return Math.max.apply(null, this); 
}; 

Array.prototype.min = function() { 
    return Math.min.apply(null, this); 
}; 
이 문제가 발생하면 16,

이 가장 크고 가장 작은 번호를 찾기위한 간단한 솔루션으로 당신은 또한 그것은 두 번째 작고 두 번째로 큰 숫자를 찾는 데 도움이되지 않습니다

var min = Math.min.apply(null, largest), 
max = Math.max.apply(null, largest); 

var min = Math.min.apply(null, numbers), 
max = Math.max.apply(null, numbers); 

사용할 수 있습니다,하지만 난 찾을 수 .