JavaScript 如何从数组中获取n个最大元素
在本文中,我们将看到如何使用JavaScript从数组中查找n个最大元素。
示例:
输入:arr = [1, 2, 3, 4, 5, 6],n = 3;
输出:4, 5, 6
解释:在给定的数组中,我们将看到3个最大的元素是4, 5, 6。
输入:arr = [5, 76, 32, 98, 52, 57],n = 2;
输出:98, 76
有两种方法可以找到解决方案,我们将逐个学习它们:
蛮力法: 我们首先创建一个名为largArr的数组,其长度等于n。然后,对于largArr的每个索引,我们逐个从数组中填充元素。
示例
如果我们有n=3,那么数组 largArr 的长度将等于3,然后我们将逐个运行 for循环 将元素填充到largArr中。
let largArr = new Array();
let arr = new Array(93, 17, 56, 91,
98, 33, 9, 38, 55, 78, 29, 81, 60);
function largest() {
largArr[0] = 0;
largArr[1] = 0;
largArr[2] = 0;
for (i = 0; i < arr.length; i++) {
if (arr[i] > largArr[0]) {
largArr[0] = arr[i];
}
}
for (i = 0; i < arr.length; i++) {
if (arr[i] > largArr[1]
&& arr[i] < largArr[0]) {
largArr[1] = arr[i];
}
}
for (i = 0; i < arr.length; i++) {
if (arr[i] > largArr[2]
&& arr[i] < largArr[1]) {
largArr[2] = arr[i];
}
}
console.log(largArr[0]);
console.log(largArr[1]);
console.log(largArr[2]);
}
largest();
输出结果:
98
93
91
优化解决方案: 我们首先按递减顺序对数组进行排序,然后在长度为n的循环中打印前n个最大元素。
示例:
let largArr = new Array();
let arr = new Array(93, 17, 56, 91, 98,
33, 9, 38, 55, 78, 29, 81, 60);
findLargest3();
function findLargest3() {
arr.sort((a, b) => a < b ?
1 : a > b ? -1 : 0);
console.log(arr[0]);
console.log(arr[1]);
console.log(arr[2]);
console.log(arr.slice(0, 3));
}
输出:
98
93
91
[98,93,91]
极客教程