Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Exemplos de Ordenações com UDTs</title>
- </head>
- <body>
- <a href="#idElementoQueSinalizadaUltimoExercicio">Atalho para o último exercício</a>
- <script>
- const DEFAULT_MARCA = "Marca";
- const DEFAULT_MODELO = "Modelo";
- const DEFAULT_CONSUMO = "x/100";
- const DEFAULT_PVP = 555000;
- function Carro(
- pMarca,
- pModelo,
- pConsumo,
- pPVP
- ){
- this.mMarca = pMarca===undefined ? DEFAULT_MARCA : pMarca;
- this.mModelo = pModelo===undefined ? DEFAULT_MODELO : pModelo;
- this.mConsumo = pConsumo===undefined ? DEFAULT_CONSUMO : pConsumo;
- this.mPVP = pPVP===undefined ? DEFAULT_PVP : pPVP;
- }//Carro
- function fQueExplicaComoSeOrdenaAscendentementePorPreco(
- pO1,
- pO2
- ){
- if (pO1.mPVP>pO2.mPVP) return +3;
- if (pO1.mPVP<pO2.mPVP) return -555;
- //if (pO2.mPVP===pO2.mPVP) return 0;
- return 0;
- }//fQueExplicaComoSeOrdenaAscendentementePorPreco
- function fQueExplicaComoSeOrdenaDescendentementePorPreco(
- pO1,
- pO2
- ){
- if (pO1.mPVP>pO2.mPVP) return -3;
- if (pO1.mPVP<pO2.mPVP) return +555;
- //if (pO2.mPVP===pO2.mPVP) return 0;
- return 0;
- }//fQueExplicaComoSeOrdenaDescendentementePorPreco
- //"preferível"
- function fQueExplicaComoSeOrdenaDescendentementePorPreco2(
- pO1,
- pO2
- ){
- return -1*fQueExplicaComoSeOrdenaAscendentementePorPreco(pO1, pO2);
- }//fQueExplicaComoSeOrdenaDescendentementePorPreco2
- Carro.prototype.toString = function(){
- var frase = "<ul>";
- frase+="<li>Marca: <mark>"+this.mMarca+"</mark></li>";
- frase+="<li>Modelo: <mark>"+this.mModelo+"</mark></li>";
- frase+="<li>Consumo: <mark>"+this.mConsumo+"</mark></li>";
- frase+="<li>PVP: <mark>"+this.mPVP+"</mark></li>";
- frase+="</ul>"
- return frase;
- }//Carro.toString
- var c1 = new Carro(), //carro por defeito
- c2 = new Carro("VW", "Polo", "6/100", 10000),
- c3 = new Carro("Nissan", "Leaf", "2", 12000),
- c4 = new Carro("Nissan", "Xpto", "4", 333333);
- var garagem = [c1, c2, c3, c4];
- garagem.sort(/* não tendo explicado COMO, o JS reduziu tudo a frases */);
- document.write (garagem);
- document.write ("<hr>");
- //garagem.sort(fQueExplicaComoSeOrdenaAscendentementePorPreco);
- //garagem.sort(fQueExplicaComoSeOrdenaDescendentementePorPreco);
- garagem.sort(fQueExplicaComoSeOrdenaDescendentementePorPreco2);
- document.write (garagem);
- /*
- Escreva uma solução que permita a ordenação ASCENDENTE por marca
- e, havendo carros da mesma marca, serão distintos por PVP DESCENDENTE
- */
- function fQueExplicaPrimeiroOrdenarPorMarcaADepoisPorPVPD(
- a, b
- ){
- //critério #1 (marca, ascendente)
- if (a.mMarca>b.mMarca) return +1;
- if (a.mMarca<b.mMarca) return -1;
- //se chegámos aqui, é pq os carros têm a mesma marca
- //entra então em ação um critério #2, que é o PVP
- //mas descendente
- if (a.mPVP>b.mPVP) return -1;
- if (a.mPVP<b.mPVP) return +1;
- return 0; //mesma marca *e* o mesmo PVP
- }//fQueExplicaPrimeiroOrdenarPorMarcaADepoisPorPVPD
- document.write("<hr><h1 id=\"idElementoQueSinalizadaUltimoExercicio\">Ordenação por Marca (A) e, depois, por PVP (D)</h1>");
- garagem.sort(fQueExplicaPrimeiroOrdenarPorMarcaADepoisPorPVPD);
- document.write(garagem);
- </script>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement