Realizzare con JavaScript un piccolo programma che gestisca i punteggi (interi, anche negativi) ricevuti dall’utente in un sito di Q&A, producendo un confronto immediato fra la serie originale e una versione “migliorata” ottenuta secondo le regole richieste.
Definizione dei dati di partenza
Si crea un array letterale (const originalScores = [...]) che contiene, in ordine cronologico, tutti i punteggi ricevuti.
Calcolo riutilizzabile della media
Si implementa una funzione average(arr) che:
reduce() per sommare gli elementi dell’array.Math.round().Duplicazione e miglioramento dell’array
Eliminazione dei punteggi negativi
Con filter(score => score >= 0) si ottiene la copia “pulita” e si conteggia NN, pari alle eliminazioni effettuate.
Rimozione dei due valori più bassi residui
sort((a, b) => a - b).slice(2) dei primi due elementi.Inserimento dei nuovi punteggi
push() in un ciclo per aggiungere NN + 2 copie di tale media, come richiesto.Stampa di confronto
Si visualizzano in console entrambe le versioni dell’array e le rispettive medie, permettendo il riscontro immediato dei benefici dell’elaborazione.
'use strict';
// 1. Array originale di punteggi (esempio)
const originalScores = [5, -2, 10, 0, -7, 3, 9, -1, 4];
console.log('Array originale:', originalScores);
// Funzione di utilità per la media arrotondata
function average(arr) {
return Math.round(
arr.reduce((acc, v) => acc + v, 0) / arr.length // somma e divisione
);
}
// 3.a - copia senza valori negativi
let improved = originalScores.filter(score => score >= 0);
const NN = originalScores.length - improved.length; // numero di negativi eliminati
// 3.b - rimozione dei due punteggi più bassi tra quelli rimasti
improved.sort((a, b) => a - b); // ordine crescente
improved = improved.slice(2); // scarto dei primi due
// 3.c - aggiunta di (NN + 2) punteggi pari alla media attuale
const avg = average(improved);
for (let i = 0; i < NN; i++) {
improved.push(avg);
}
// 4. Stampa dei risultati
console.log('Array migliorato:', improved);
console.log('Media originale:', average(originalScores));
console.log('Media migliorata:', average(improved));
filter, slice) evita effetti collaterali ma può generare copie addizionali; nel contesto dell’esercizio l’impatto è trascurabile.sort() senza ulteriori precauzioni.Scrivere un breve programma JS che, a partire da una stringa contenente più nomi separati da virgola, costituisca: