2017-05-15 2 views
1

이 예에서는 계층 적 순서 (1. 306, 2. 267, 3. 263)로 가장 큰 3 개의 값 목록 또는 배열을 얻는 방법을 설명합니다.배열 내의 값에 대한 최상위 계산 루프

var array = [267, 306, 108, 263, 67]; 
var largest = Math.max.apply(Math, array); // 306 
+0

가능한 중복에 http : // 유래. com/questions/1063007/sort-of-integer-of-integer- 정확하게 –

답변

4

가장 큰 항목을 작은 항목으로 정렬 한 다음 가장 큰 항목 3 개를 조각화해야합니다.

var arr = [267, 306, 108, 263, 67]; 
 

 
console.log(arr.sort((a, b) => b - a).slice(0, 3));
.as-console-wrapper { top: 0; max-height: 100% !important; }

+0

감사합니다. 잘 작동합니다. 그러나 값은 문자열을 참조하며 정렬 후 값을 참조하는 방법을 모르겠습니다. 나는 값의 뒤에 그것을 추가했다. ('string'을 사용한다.) 그러나 정렬에 의해서는 유용하지 않다. 어떤 해결책? – user3236072

+0

예,'(a, b) => b.localeCompare (a)'또는'parseInt (b, 10) - parseInt (a, 10)'를 사용하십시오. –

+0

좋아요! :) 고맙습니다. – user3236072

0

당신은 당신이 원하는 것을 얻을 Array.sort()Array.slice() 방법을 사용할 수 있습니다.

var array = [267, 306, 108, 263, 67]; 
var sorted = array.sort(function(a,b) { return b - a }); // sort the array in descending order 
var largest = sorted.slice(0, 3); // get first three array elements 
console.log(largest); // Array [ 306, 267, 263 ] 
+1

귀하의 대답은 정확하고 유용해야합니다. [정답이 아닌] 어떤 지시를하면 대답을 쓰지 말고 대답을 사용하십시오. –

+0

힌트를 보내 주셔서 감사합니다. –

+0

환영합니다. 하지만 당신의 대답은 @Mr과 동일합니다. 폴리whril. 동일한 답변은 중복으로 표시해야하며 제거해야합니다. –

0

당신은 그것을 좋아 얻을 수 있습니다 :

var array = [267, 306, 108, 263, 67]; 

findLargest3(); 

function findLargest3(){ 
    // sort descending 
    array.sort(function(a,b){ 
     if(a < b){ return 1; } 
     else if(a == b) { return 0; } 
     else { return -1; } 
    }); 
    alert(array.slice(0, 3)); 

} 

과 같이 Js Fiddle

0

당신은 도우미 함수를 작성할 수 있습니다 사용 :

function getTopItems(arr, howMany, comparator) { 
    if (typeof comparator !== "function") { 
     comparator = function(a, b) {return a > b;}; 
    } 
    function addToOutput(item) { 
     var previous = item; 
     var found = false; 
     for (var innerIndex = 0; innerIndex < output.length; innerIndex++) { 
      if (found) { 
       var aux = previous; 
       previous = output[innerIndex]; 
       output[innerIndex] = aux; 
      } else if (comparator(item, output[innerIndex])) { 
       found = true; 
       var aux = previous; 
       previous = output[innerIndex]; 
       output[innerIndex] = aux; 
      } 
      console.log(output); 
     } 
     if (output.length < howMany) output.push(previous); 
    } 
    var index = 0; 
    var output = []; 
    while (index < arr.length) { 
     addToOutput(arr[index++]); 
    } 
    return output; 
}