2
respostas

for...of

Na aula passada a instrutora mencionou fazer um código no selectionSort para o for..of também, alguém conseguiu?

Eu tomei uma surra e não consegui. Gostaria de saber como é o raciocínio.

Lembrando q o codigo abaixo eu modifiquei mil vezes , esse ai só uma das versões que não funcinou

for(let valor of livros) {

    let menor = menorValor(livros, valor);


    let livroAtual = livros[valor];    
    let livroMenorPreco = livros[menor];

    livros[valor] = livroMenorPreco;
    livros[menor] = livroAtual;    

} 
console.log(livros); 
2 respostas

Pra o selection sort a gnt precisa saber o índice do elemento atual, que não tem como pegar diretamente pelo for..of. Mas dá pra adaptar usando o método entries() no array livros. No link vc pode ver como ele funciona, mas essencialmente ele pega um elemento do array e retorna o um objeto contendo o índice mais o elemento. Dessa forma podemos ter o índice e resto do código permanece igual.

for(let [indiceAtual, livro] of livros.entries()) {
  let menor = menorValor(livros, indiceAtual);

  livros[indiceAtual] = livros[menor];
  livros[menor] = livro;
}

pra ficar próximo com oq tem na aula, chamei o índice do livro atual de indiceAtual

Uau , primeira vez que vejo esse entries(). Uma outra forma de fazer que manteria seu código praticamente como está é usar o for...in.

for(let valor in livros) {

    let menor = menorValor(livros, valor);


    let livroAtual = livros[valor];    
    let livroMenorPreco = livros[menor];

    livros[valor] = livroMenorPreco;
    livros[menor] = livroAtual;    

} 
console.log(livros); 

Nesse tipo de for o que é armazenado no valor é o indice de livros.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software