Ordenação

Dado um vetor com: 2 4 5 6 6, preciso mostrar na tela o segundo maior elemento do mesmo.
Segue um trecho do código:

function processData(myArray) {
    function sortFunction (a,b) {
       return (b-a);
    }
    myArray.sort(sortFunction);
    var i, res = myArray[1];
    for(i=1; i < myArray.length; i++) {
        if(myArray[i]  myArray[i+1]) 
            res = myArray[i+1];
    }
        console.log(res);
}

No caso de, o número maior ser repetido, meu resultado não sai conforme esperado. Exemplo:
2 3 5 6 6, deveria resultar em 5. O meu sai 6. Qual condição eu implemento para conseguir evitar esse problema?

Confesso que no seu código, depois de dar sort no array, nao entendi mais nada.

O que pode fazer é (especialmente para pequenos arrays), antes de dar sort, transformar o array num Set (que remove duplicados) e depois para array novamente:

  myArray = Array.from(new Set(myArray));
  myArray.sort ....
1 curtida

Abel, obrigado pelo feed tentarei escrever códigos mais legíveis pois me preocupo bastante com isso.

Vou utilizar e procurar saber mais sobre essa pequena função. Muito obrigado!

Desculpe, eu teria tido mais cuidado com minhas palavras se tivesse focado em dar feedback.

Eu falei isso mas como um “mea-culpa”, tipo, “nao prestei atençao no que está fazendo depois, mas esse passo antes deve te ajudar”.

1 curtida