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