1
resposta

arrProdutos?

Como o Js sabe que arrProdutos tem que utilizar a const livros se não tem nada equiparando as duas coisas? Se usasse const livros não daria o mesmo resultado de forma mais semântica?

1 resposta

Bom dia, Alini!

Sim, seria mais semântico. Contudo, somente poderia ser usado para a lista de objetos em questão, e para mais nenhuma outra. Portanto, a fim de poder reaproveitar esse código de ordenação para várias listas de objetos, utiliza-se uma variável qualquer que ocupa esse espaço que pode assumir qualquer lista de objetos cujos elementos possuam a (ou as) categoria requisitada - preço, título, nome, valor, o que for.

Quando se imprime a função (mostra o resultado da operação na tela), a array (ou lista) que ocupa o lugar dessa variável qualquer que representa uma lista de objetos será equiparada à própria.

Vejamos um exemplo:

const Livros = require('./ListaDeLivrosProg');

function MenorValue(arrProduto, indexinicial){ let custo_mais_baixo = indexinicial;

for(let indexatual = indexinicial; indexatual < arrProduto.length; indexatual++){

    if(arrProduto[indexatual].preco < arrProduto[custo_mais_baixo].preco){

        custo_mais_baixo = indexatual;
    }
}
return custo_mais_baixo;

}

for(let atual = 0; atual < Livros.length - 1; atual++){

let menor = MenorValue(Livros, atual);

let LivroAtual = Livros[atual];

console.log('Posição atual: ', atual);
console.log('Livro atual: ', Livros[atual]);

let LivroMenorPreco = Livros[menor];

console.log('Livro de menor custo: ', Livros[menor]);

Livros[atual] = LivroMenorPreco;
Livros[menor] = LivroAtual;

}

console.log(Livros);

Na declaração da função "MenorValue", o primeiro argumento é uma variável qualquer de nome "arrProduto". No segundo "for", chamei a função cujo primeiro argumento é uma array de objetos - Livros. Quando coloquei essa lista na mesma posição que o argumento original, o Javascript entendeu que "arrProduto = Livros" naquele momento.

Se quisesse aproveitar o código para outras arrays de objetos, teria que replicar os segundos "for" (e o console.log() ) com as devidas mudanças, mas não a função "MenorValue", que pode operar qualquer outra lista de objetos que contenha a categoria/característica "preco".

Um pequeno exercício: crie algumas listas de objetos (umas três), crie uma função de "valor menor" ou similar e crie três outras folhas (uma para cada lista) com o código de ordenamento (do tipo selection sort) e chame essa função em cada uma dessas folhas.