js如何获取数组中指定个数的几个最大值

数组如下:

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

如何得到3个或N个最大值得数组

arr2 = [5,10,15]
阅读 12.3k
5 个回答
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));
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));

冒泡排序,然后取前几个

按照规则排序后直接使用slice方法拉取前n项

试试这个,可以获取最大最小,并且可以自定义

function minOrMaxsInArray(array, length, compare) {

    let result = {};

    if (array == null || !(array instanceof Array)) {
        return result;
    }
    // 默认长度为数组的长度
    length = length || array.length;
    // 数组比较方法
    compare = compare || function (a, b) {
            return a - b;
        };

    // 进行排序
    array.sort(compare);

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

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

}

获取普通数组最大 || 最小集合:

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

获取对象数组的最大 || 最小集合

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));
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题