Ordenação

3 respostas
ordernodejs
lucasaranha

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?

3 Respostas

A

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 ....
lucasaranha

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!

A

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”.

Criado 30 de janeiro de 2018
Ultima resposta 30 de jan. de 2018
Respostas 3
Participantes 2