Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Vytvořte funkci, které se předá na vstupu pole čísel. V tomto poli najde největší 3 prvky, ty sečte a vrátí výsledek.

Aktivity
Avatar
Ladislav Šafránek:19.11.2021 1:11

Zdravím, tuto část jsem naprosto nepochopil.

function soucet3Nejvetsich(cisla) {
                        cisla.sort(function(a, b) {return b-a});
                        return cisla[0] + cisla[1] + cisla[2];
                }

                let cisla = [15, 8, 12, 16, 4, 1, 5, 14];

                document.write('Pole čísel:');
                document.write('<ul>');
                for (let cislo of cisla) {
                        document.write('<li>' + cislo);
                }
                document.write('</ul>');
                document.write('Součet největších 3 čísel: ' + soucet3Nejvetsich(cisla));

Už jenom proto, protože čísla "15, 8, 12," z "return cisla[0] + cisla[1] + cisla[2];" určitě nejsou největší... :-S

 
Odpovědět
19.11.2021 1:11
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:19.11.2021 7:44
array.sort() - seradi podle hodnot v array
function(a, b) {return b-a} - funkce, ktera vrati b-a.

Serazovaci algoritmus pracuje s hodnotami: a>b return 1, a<b return -1, a==b return 0. Funkce, kterou mu das, tedy musi vracet jeden z techto vysledku. Muze to byt i velke zaporne cislo.

return cisla[0] + cisla[1] + cisla[2]; - vraci prvni 3 cisla v poli

Protoze jsi pole preskupil sortem, tak v 0,1,2 neni 15, 8, 12, jak si myslis ty, ale neco jineho.

function soucet3Nejvetsich(cisla) {
console.log(cisla) // nebo muzes pouzit: document.write(JSON.stringify([ cisla ]));
                        cisla.sort(function(a, b) {return b-a});
console.log(cisla)//document.write(JSON.stringify([ cisla ]));
console.log(cisla[0], cisla[1], cisla[2])//document.write(JSON.stringify([ cisla[0], cisla[1], cisla[2] ]));
console.log(cisla[0] + cisla[1] + cisla[2])
                        return cisla[0] + cisla[1] + cisla[2];
                }
Editováno 19.11.2021 7:46
 
Nahoru Odpovědět
19.11.2021 7:44
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.