Как получить максимум пять значений из массива в Javascript?

hi я новичок в angularjs, здесь мне нужно пять наивысших значений в этом массиве, а не только одно максимальное значение. я попытался, но я получаю только одно максимальное значение.

вот мой код.

var arr = [3, 4, 12, 1, 0, 5,22,20,18,30,52];
var max = arr[0];
var maxValues = [];
for (var k = 1; k < arr.length; k++) {
  if (arr[k] > max) {
    max = arr[k]; // output is 52
   //do some thing to push max five values ie 52,30,22,20,18
  }
}
console.log("Max is: " + max);
console.log("total five max values is: " + maxValues);expected output[52,30,22,20,18];

Ответ 1

Вы можете сделать это следующим образом:

var arr = [3, 4, 12, 1, 0, 5,22,20,18,30,52];
arr = arr.sort(function (a, b) {  return a - b; });
arr = arr.slice(Math.max(arr.length - 5, 0))
console.log(arr);

Ответ 2

Вы можете отсортировать его в порядке убывания, а затем извлечь значения n, используя array.slice

function getMaxValues(arr, n){
  return arr.sort(function(a,b){ return b-a }).slice(0,n);
}

var arr = [3, 4, 12, 1, 0, 5,22,20,18,30,52];
console.log(getMaxValues(arr, 5))
console.log(getMaxValues(arr, 3))

Ответ 3

С помощью angular вы можете использовать limitTo.

В привязке HTML-шаблона

{{ limitTo_expression | limitTo : limit : begin}}

В JavaScript

$filter('limitTo')(input, limit, begin)