鍍金池/ 問(wèn)答/網(wǎng)絡(luò)安全  HTML/ js如何獲取數(shù)組中指定個(gè)數(shù)的幾個(gè)最大值

js如何獲取數(shù)組中指定個(gè)數(shù)的幾個(gè)最大值

數(shù)組如下:

var arr = [1,5,3,2,10,15]

如何得到3個(gè)或N個(gè)最大值得數(shù)組

arr2 = [5,10,15]
回答
編輯回答
憶往昔

試試這個(gè),可以獲取最大最小,并且可以自定義

function minOrMaxsInArray(array, length, compare) {

    let result = {};

    if (array == null || !(array instanceof Array)) {
        return result;
    }
    // 默認(rèn)長(zhǎng)度為數(shù)組的長(zhǎng)度
    length = length || array.length;
    // 數(shù)組比較方法
    compare = compare || function (a, b) {
            return a - b;
        };

    // 進(jìn)行排序
    array.sort(compare);

    result = {
        1: array.slice(0, length),
        2: array.reverse().slice(0, length)
    };

    return function (type) {
        return result[type] || [];
    }

}

獲取普通數(shù)組最大 || 最小集合:

let arr = [1, 5, 3, 2, 10, 15];
console.log(minOrMaxsInArray(arr, 4)(1));
console.log(minOrMaxsInArray(arr, 4)(2));

獲取對(duì)象數(shù)組的最大 || 最小集合

let arr2 = [{id: 1}, {id: 3}, {id: 4}, {id: 9}, {id: 12}, {id: 199}];
console.log(minOrMaxsInArray(arr2, 4, (a, b) => (a.id - b.id))(1));
2017年12月21日 02:52
編輯回答
清夢(mèng)

冒泡排序,然后取前幾個(gè)

2017年9月28日 09:59
編輯回答
傻叼

按照規(guī)則排序后直接使用slice方法拉取前n項(xiàng)

2017年11月25日 05:03
編輯回答
悶騷型
let largest = (arr, n) => arr.sort((a,b) => a < b).slice(0, n);

let arr = [1,5,3,2,10,15];
console.log(largest(arr, 3));
2017年12月11日 11:22
編輯回答
萢萢糖
var arr = [1,5,3,2,10,15];
  function maxarr(arr,len){
      var max = [];
    arr.sort(function(a,b){
       return a-b;
   });
   for(var i=0;i<len;i++){
       max.push(arr.pop());
   }
   return max.reverse();
  }

   console.log(maxarr(arr,4));
2017年4月12日 13:42