📜  数组中的第二大数字 javascript (1)

📅  最后修改于: 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

以上是三种常见的方法,你可以根据具体情况选择最适合你的方法。