先将数组元素进行降序排序,再从排序后的数组中截取前n个元素,即为该数组中最大的n个元素。
const arr = [3, 4, 12, 1, 0, 5, 22, 20, 18, 30, 52];
const pickGreatest = (arr, num) => {
if(num > arr.length){
return [];
};
const descendingCopy = arr.slice().sort((a,b)=>{return b-a));
//使用slice()使生成一个和原数组完全相同的新数组,在新数组上进行排序,不会改变原数组
return descendingCopy.splice(0, num);
//splice()方法,从第0个元素的位置开始,删除num个元素,并返回删除的元素。
//若在上一步中arr数组不使用slice()方法在新数组上进行排序操作,则这一步splice则会直接在排好序的原数组上进行删除操作,会改变原数组。
};
console.log(pickGreatest(arr, 3));
console.log(pickGreatest(arr, 4));
console.log(pickGreatest(arr, 5));