Advertisement
akanoce

vehicles_array_excercise

Jun 28th, 2022
812
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JavaScript 4.67 KB | None
  1. //Di seguito sono riportati i dati relativi alle automobili disponibili presso un noto concessionario
  2. //Ci viene richiesto di realizzare un programma per estrapolare delle informazioni basate su questi dati
  3. //È preferibile l'utilizzo di array methods e arrow functions ove possibile, anche in ottica di riduzione e semplificazione del codice
  4.  
  5. const vehicles = [
  6.     { brand: 'BMW', model: 'M3', engine: { hp: 450, supply: 'Gasoline' }, year: 2019 },
  7.     { brand: 'Mercedes', model: 'CLA', engine: { hp: 180, supply: 'Diesel' }, year: 2022 },
  8.     { brand: 'Mercedes', model: 'A180', engine: { hp: 450, supply: 'Gasoline' }, year: 2021 },
  9.     { brand: 'Volkswagen', model: 'Golf', engine: { hp: 190, supply: 'Hybrid' }, year: 2020 },
  10.     { brand: 'Volvo', model: 'XC40', engine: { hp: 220, supply: 'Diesel' }, year: 2020 },
  11.     [
  12.         { brand: 'Tesla', model: 'Model S', engine: { hp: 550, supply: 'Electric' }, year: 2018 },
  13.         { brand: 'Tesla', model: 'Model X', engine: { hp: 500, supply: 'Electric' }, year: 2017 }
  14.     ],
  15.     [
  16.         { brand: 'Cupra', model: 'Formentor', engine: { hp: 300, supply: 'Hybrid' }, year: 2022 },
  17.         { brand: 'Cupra', model: 'Born', engine: { hp: 232, supply: 'Electric' }, year: 2022 }
  18.     ],
  19.     { brand: 'Volkswagen', model: 'Tiguan', engine: { hp: 220, supply: 'Diesel' }, year: 2019 },
  20.     { brand: 'Toyota', model: 'CHR', engine: { hp: 150, supply: 'Hybrid' }, year: 2019 }
  21. ];
  22.  
  23. // 1) L'array vehicles non è normalizzato, si richiede di scrivere una funzione normalizeArray che accetta come parametro un array e ne restituisce uno normalizzato.
  24. //(vehicles è un array di oggetti dove alcuni elementi sono a loro volta array di oggetti), in modo da lavorarci necessitiamo di un semplice array di oggetti
  25.  
  26. const normalizeArray = (array) => {
  27.  
  28.  
  29. }
  30.  
  31. const normalizedVehicles = normalizeArray(vehicles);
  32. console.log(vehicles.length, normalizedVehicles.length);
  33. //Se tutto è corretto, produce 9 11
  34.  
  35. //2) Definire una funzione simplifyVehicles
  36. // accetta come parametro un array vehicles, e ne restituisce una versione semplificata, dove engine viene rimosso e i campi al suo interno vengono "sparsi" nell'oggetto principale (spread operator!)
  37.  
  38.  
  39. //NB: È fortemente consigliato utilizzare uno dei due array prodotti dai metodi sopra per la risoluzione dei prossimi esercizi
  40.  
  41.  
  42. //3) Definire una funzione stringifyVehicles
  43. // accetta come parametro un array vehicles, e restituisce un array di stringhe dove ogni stringa è la versione stringifata di ogni oggetto vehicle
  44. //Le stringhe devono essere formattate nel seguente modo "Toyota CHR | 150HP (Benzina) - 2019"
  45.  
  46. //4) Definire una funzione getVehiclesByBrand,
  47. //accetta come parametri vehicles e brand, restituisce l'array dei soli veicoli appartenenti a quel brand
  48.  
  49.  
  50. //5) Definire una funzione getVehiclesByYearAndSupply
  51. // accetta come parametri year e supply, restituisce tutti i veicoli prodotti in quell'anno e con quel tipo di carburante (supply)
  52.  
  53.  
  54. //6) Definire una funzione getVehiclesNotByYearOrNotBySupply
  55. // accetta come parametri year e supply, restituisce tutti i veicoli che non sono prodotti in quell'anno oppure non utilizzano quel tipo di carburante (supply)
  56.  
  57.  
  58. //7) Definire una funzione groupVehiclesByBrand
  59. // accetta come parametro vehicles, restituisce un oggetto dove ogni chiave è un brand, e ogni valore è l'array dei relativi veicoli di quel brand
  60. //// {
  61. //  bmw: [...],
  62. //  mercedes: [...],
  63. // ....
  64. // }
  65. //HINT: Per evitare calcoli inutili, è ottimale riuscire ad estrapolare tutti i brand presenti in maniera univoca
  66.  
  67.  
  68.  
  69.  
  70. //8) Definire una funzione simplifiedGroupVehiclesByBrand
  71. // accetta come parametro vehicles, utilizza il metodo precedente, per ritornare un nuovo array dove la chiave brand di ogni veicolo dentro l'array dei valori riferito da ogni chiave viene rimossa (visto che il brand è già noto dalle chiavi nell'oggetto stesso)
  72.  
  73.  
  74.  
  75. //9) Definire una funzione getAverageHp
  76. // accetta come parametri vehicles e brand(opzionale)
  77. // se brand viene passato come parametro, restituisce la media dei cavalli(hp) di tutte le auto di quel brand, altrimenti restituisce lo stesso ma di tutti i vehicles
  78.  
  79. //10) Definire una funzione sortVehicles
  80. // accetta come parametri vehicles, year (opzionale), hp (opzionale) e direction
  81. // La funzione deve ritornare un nuovo array ordinato in base alle seguente regole:
  82. // Se Year ed hp vengono passati come parametri, ordina i veicoli per year e per hp nel caso di year uguali
  83. //Se viene passato solo uno dei due parametri, l'array viene ordinato solo in base a quelal chiave
  84. // Se nessun parametro viene passato, l'array viene ordinato per brand
  85. //Direction è la direzione dell'ordinamento (1: crescente, -1: decrescente, altri valori devono ritornare un eccezione)
  86.  
Advertisement
RAW Paste Data Copied
Advertisement