Как найти три самых больших числа в массиве?

0

Вопрос

Здравствуйте, я хочу найти три самых больших числа в массиве по ПОРЯДКУ. Я не понимаю, как я должен реализовать последнюю логику, в которой я должен сдвигать индексы массива результатов в зависимости от того, больше или меньше текущее число в массиве результатов, чем цикл элементов массива.

    function findThreeLargestNumbers(array) {
  let result = [null, null, null];
  for (let i = 0; i < array.length; i++) {
    if (!result[2] || result[i] > result[2]) {
      for (let j = 0; i <= 2; i++) {
        if (j === 2) {
          result[j] = array[i]
        } else {
          result[j] = array[i + 1]
        }
      }
    }
  }
  return result
}


console.log(findThreeLargestNumbers([141, 1, 17, -7, -17, -27, 18, 541, 8, 7, 7]));
algorithm javascript
2021-11-24 00:43:28
1

Лучший ответ

2

Вы можете простоsort его в порядке возрастания и использованияslice чтобы получить последнее 3 элементы, такие как:

1) Когда вы хотите получить результат в последних 3 по величине в порядке возрастания [18, 141, 541]

function findThreeLargestNumbers(array) {
  return [...array].sort((a, b) => a - b).slice(-3);
}

// [18, 141, 541]
console.log(findThreeLargestNumbers([141, 1, 17, -7, -17, -27, 18, 541, 8, 7, 7]));

2) Когда вы хотите получить результат в последних 3 по величине в порядке убывания [541, 141, 18]

function findThreeLargestNumbers(array) {
  return [...array].sort((a, b) => b - a).slice(0, 3);
}

console.log(findThreeLargestNumbers([141, 1, 17, -7, -17, -27, 18, 541, 8, 7, 7]));

2021-11-24 00:50:39

Еще лучше клонировать массив и получить последние 3 числа. Кстати, спасибо ОТРЕДАКТИРОВАНО
decpk

чтобы клонировать массив, вы бы использовали оператор распространения или цикл for и переместили бы его в пустой массив?
dev

@dev ... это не оператор, это распространенный синтаксис. Я бы пошел на spread синтаксис...
decpk

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................