Jak najít tři největší čísla v poli?

0

Otázka

Dobrý den, chci najít tři největší čísla v poli v POŘADÍ. Jsem zmatená, jak jsem se měla realizovat poslední logiky, kde musím posunout indexy výsledek pole na základě toho, jestli se aktuální číslo ve výsledku pole je větší nebo menší než smyčka z pole položky.

    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

Nejlepší odpověď

2

Můžete jednoduše sort to ve vzestupném pořadí a použití slice získat poslední 3 prvky jako:

1) Když chcete výsledek v posledních 3 největší ve vzestupném pořadí [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) Když chceš výsledek v posledních 3 největší v sestupném pořadí [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

Ještě lepší klon pole a dostat se poslední 3 čísla. BTW díky UPRAVOVAT
decpk

klonovat pole by použít šíří provozovatel nebo smyčku a zatlačte na prázdné pole?
dev

@dev ... není provozovatel je šíření syntaxe. Já bych šel pro spread syntaxe...
decpk

V jiných jazycích

Tato stránka je v jiných jazycích

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