📅  最后修改于: 2023-12-03 14:54:59.867000             🧑  作者: Mango
当你需要在 JavaScript 中找出数组中的第二大数字时,你可以使用以下几种方法。
一种简单的方法是先将数组进行排序,然后返回倒数第二个元素。
const arr = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1];
arr.sort((a, b) => b - a);
console.log(arr[1]); // Output: 9
另一种方法是使用双重循环来比较每个元素。我们需要维护两个变量,一个用于存储最大值,一个用于存储第二大值。
const arr = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1];
let max = -Infinity;
let secondMax = -Infinity;
for (let i = 0; i < arr.length; i++) {
if (arr[i] > max) {
secondMax = max;
max = arr[i];
} else if (arr[i] > secondMax && arr[i] !== max) {
secondMax = arr[i];
}
}
console.log(secondMax); // Output: 9
第三种方法是使用 reduce() 方法,它拥有一个累加器和一个当前值。我们可以遍历数组,如果当前值大于累加器,我们就将累加器的值设为当前值,并将当前值设为新的累加器值。
const arr = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1];
const secondMax = arr.reduce((acc, curr) => {
if (curr > acc.max) {
acc.secondMax = acc.max;
acc.max = curr;
} else if (curr < acc.max && curr > acc.secondMax) {
acc.secondMax = curr;
}
return acc;
}, { max: -Infinity, secondMax: -Infinity }).secondMax;
console.log(secondMax); // Output: 9
以上是三种常见的方法,你可以根据具体情况选择最适合你的方法。