: Ler 3 valores (considere que não serão informados valores iguais) e escrever a soma dos dois maiores

Está faltando algo para que o valor somado seja o dos dois maiores números, mas não consegui encontrar o que é.

<script>

        function programa() {

            var numeros = Array ()

            var valor1 = parseFloat(document.getElementById("valor1").value);

            var valor2 = parseFloat(document.getElementById("valor2").value);

            var valor3 = parseFloat(document.getElementById("valor3").value);

            numeros.push(valor1)

            numeros.push(valor2)

            numeros.push(valor3)

            numeros.sort()

            soma = numeros[1] + numeros[2] 

            alert(soma)

        }

    </script>

    <p><b>1º Valor:</b></p>

    <input id="valor1" type="text"/> </br>

    <p><b>2º Valor:</b></p>

    <input id="valor2" type="text"/> </br>

    <p><b>3º Valor:</b></p>

    <input id="valor3" type="text"/> <br><br>

    <button type="button" onclick="programa()"> Iniciar</button>   

</body>

Faz assim: numeros.sort((a, b) => a - b);

1 curtida

Funcionou! Obrigado amigo, me ajudou bastante.

Só pra explicar o que estava acontecendo, quando você usar o método sort, sem parâmetros, ele ordena por código unicode.

Exemplo:

const array = [3, 1, 2, 10];
array.sort();
// [1, 10, 2, 3]

E caso queria saber mais sobre o método, aqui a documentação dele.

1 curtida