Нахождение второго по величине числа в массиве: простые методы JavaScript!

В JavaScript работа с массивами — обычная задача, и во многих сценариях поиск второго по величине числа в массиве может оказаться практическим требованием. В этой статье блога мы рассмотрим различные методы выполнения этой задачи на простых примерах кода JavaScript. Итак, давайте углубимся и рассмотрим различные подходы к поиску второго по величине числа в массиве!

Метод 1: сортировка массива
Один простой способ найти второе по величине число — отсортировать массив в порядке убывания, а затем получить доступ к элементу с индексом 1. Вот пример:

function findSecondLargest(array) {
  array.sort(function(a, b) {
    return b - a;
  });

  return array[1];
}
const numbers = [10, 5, 8, 20, 15];
const secondLargest = findSecondLargest(numbers);
console.log("The second largest number is: " + secondLargest);

Метод 2: перебор массива
Другой метод предполагает перебор массива и отслеживание двух самых больших встреченных чисел. Вот пример:

function findSecondLargest(array) {
  let largest = -Infinity;
  let secondLargest = -Infinity;

  for (let i = 0; i < array.length; i++) {
    if (array[i] > largest) {
      secondLargest = largest;
      largest = array[i];
    } else if (array[i] > secondLargest && array[i] < largest) {
      secondLargest = array[i];
    }
  }

  return secondLargest;
}
const numbers = [10, 5, 8, 20, 15];
const secondLargest = findSecondLargest(numbers);
console.log("The second largest number is: " + secondLargest);

Метод 3: использование Math.max() и оператора расширения.
Элегантный подход заключается в использовании функции Math.max() вместе с оператором расширения (…), чтобы найти максимальное значение и удалить его из массива., а затем снова найдите максимум. Вот пример:

function findSecondLargest(array) {
  const max = Math.max(...array);
  array.splice(array.indexOf(max), 1);
  const secondLargest = Math.max(...array);
  return secondLargest;
}
const numbers = [10, 5, 8, 20, 15];
const secondLargest = findSecondLargest(numbers);
console.log("The second largest number is: " + secondLargest);

Метод 4: использование метода уменьшения()
Метод уменьшения() позволяет нам перебирать массив и выполнять определенную операцию, чтобы свести его к одному значению. Вот пример использования функции уменьшения() для поиска второго по величине числа:

function findSecondLargest(array) {
  const secondLargest = array.reduce(function(largest, current) {
    if (current > largest[0]) {
      return [current, largest[0]];
    } else if (current !== largest[0] && current > largest[1]) {
      return [largest[0], current];
    }
    return largest;
  }, [-Infinity, -Infinity])[1];

  return secondLargest;
}
const numbers = [10, 5, 8, 20, 15];
const secondLargest = findSecondLargest(numbers);
console.log("The second largest number is: " + secondLargest);

В этой статье мы рассмотрели различные методы поиска второго по величине числа в массиве с помощью JavaScript. Мы рассмотрели такие методы, как сортировка массива, его итерация, использование Math.max() и оператора расширения, а также использование метода уменьшения(). Используя эти различные подходы, вы можете выбрать метод, который лучше всего соответствует вашим конкретным потребностям и стилю кодирования.