In questo articolo spiegheremo come programmare un interessante e curioso script per il calcolo del tempo di lettura di un testo o frase con JavaScript, cioè fare in modo che il sistema elabori una determinata area di testo e restituisca un valore temporale in minuti e secondi, riferito al tempo di lettura medio che un utente impiegherebbe.
Ovviamente il calcolo del tempo di lettura con JavaScript restituirà esclusivamente una stima, in base a valori preimpostati, determinando quante parole riuscirebbe una persona media a leggere in un minuto.
Vediamo in dettaglio questo script.
Calcolo del tempo di lettura di un testo con JavaScript
Per determinare quanto tempo impiegherebbe un utente medio a leggere un testo o una frase, ipotizzeremo una velocità di lettura compresa tra i 220 e i 230 parole al minuto (secondo statistica). Questo vale esclusivamente per la lettura di caratteri digitali, non scrittura a mano.
Per fare questo dovremmo sapere di quante parole è composto il testo interessato. Per questo motivo ci risulterà molto utile un conta caratteri e parole.
Tuttavia, per fornire il codice più completo possibile, integreremo il conta parole nel seguente script, con aggiunta del calcolo del tempo di lettura.
Il codice verrà suddiviso in tre sezioni:
- Funzione per il conteggio delle parole di testo (opzionale);
- Funzione per la conversione dei valori numerici in valore temporale;
- Elaborazione del tempo di lettura;
A fondo pagina potrai trovare il codice completo.
Funzione per il conteggio delle parole
Qui di seguito un semplice script per il conteggio delle parole di una frase. Questo script ci servirà per il calcolo del tempo.
var frase = "Quel ramo del lago di Como, che volge a mezzogiorno, tra due catene non interrotte di monti, tutto a seni e a golfi, a seconda dello sporgere e del rientrare di quelli, vien, quasi a un tratto, a ristringersi, e a prender corso e figura di fiume, tra un promontorio a destra, e un’ampia costiera dall’altra parte; e il ponte, che ivi congiunge le due rive, par che renda ancor più sensibile all’occhio questa trasformazione, e segni il punto in cui il lago cessa, e l’Adda rincomincia, per ripigliar poi nome di lago dove le rive, allontanandosi di nuovo, lascian l'acqua distendersi e rallentarsi in nuovi golfi e in nuovi seni - Promessi Sposi - Manzoni";
frase = frase.replace(/[&/#,+()$~%.'":*?<>{}]/g,"");
var nParole = frase.split(" ").filter(function(n) { return n != "" }).length;
console.log(nParole); // 116
Funzione dei numeri in valore temporale
Come anticipato, la seguente funzione serve a convertire i valori numerici decimali del calcolo parole/minuto (che vedremo nel prossimo paragrafo) in un valore temporale leggibile (in minuti e secondi).
function convTempo(m){
var e = m < 0 ? "-" : "";
var min = Math.floor(Math.abs(m));
var sec = Math.floor((Math.abs(m) * 60) % 60);
return e + (min < 10 ? "0" : "") + min + ":" + (sec < 10 ? "0" : "") + sec;
}
console.log(convTempo(15.95)) // 15:57
Calcolo tempo di lettura
Il calcolo del tempo di lettura è dipendente dalle precedenti funzioni descritte (Tuttavia è possibile riadattare facilmente il codice escludendole, ma ottenendo un risultato più grezzo).
const paroleAlMin = 220;
// velocità di lettura media
var tempoLettura = nParole/paroleAlMin;
// 116/285
console.log(convTempo(tempoLettura));
// 00:31 (31 secondi per la lettura della nostra frase)
Da notare attentamente il valore “220” della variabile costante “paroleAlMin
“. Questo numero determina la velocità di lettura media di un utente, ovvero le parole che riesce a leggere in un minuto.
Dunque, il tempo di lettura del primo paragrafo dei promessi sposi si aggira sui 30 secondi. Il tempo reale può variare da persona a persona, ma generalmente oscilla su quel valore.
Codice completo
Qui in basso (per i più frettolosi) il codice descritto nei precedenti paragrafi per la stima del tempo di lettura di un testo con JavaScript.
//frase esempio estratta da "I promessi sposi"
var frase = "Quel ramo del lago di Como, che volge a mezzogiorno, tra due catene non interrotte di monti, tutto a seni e a golfi, a seconda dello sporgere e del rientrare di quelli, vien, quasi a un tratto, a ristringersi, e a prender corso e figura di fiume, tra un promontorio a destra, e un’ampia costiera dall’altra parte; e il ponte, che ivi congiunge le due rive, par che renda ancor più sensibile all’occhio questa trasformazione, e segni il punto in cui il lago cessa, e l’Adda rincomincia, per ripigliar poi nome di lago dove le rive, allontanandosi di nuovo, lascian l'acqua distendersi e rallentarsi in nuovi golfi e in nuovi seni - Promessi Sposi - Manzoni";
//conteggio delle parole nella frase
frase = frase.replace(/[&/#,+()$~%.'":*?<>{}]/g,"");
var nParole = frase.split(" ").filter(function(n) { return n != "" }).length;
//funzione per la conversione del tempo
function convTempo(m){
var e = m < 0 ? "-" : "";
var min = Math.floor(Math.abs(m));
var sec = Math.floor((Math.abs(m) * 60) % 60);
return e + (min < 10 ? "0" : "") + min + ":" + (sec < 10 ? "0" : "") + sec;
}
// velocità di lettura media (parole al minuto)
const paroleAlMin = 220;
var tempoLettura = nParole/paroleAlMin;
console.log(convTempo(tempoLettura)); // 00:31
Iscriviti alla nostra Newsletter qui e seguici su Facebook per aggiornamenti!
Articoli recenti:
- Recensione In Fuga. Ciclo Le Cronache dell’Ultimo Druido di Kevin Hearne
- Recensione Fool Moon di Jim Butcher
- Recensione Storm Front di Jim Butcher
- Upgrade Scheda Rete. Sostituzione della Realtek RTL8822CE
- Da jQuery a JavaScript Puro: Sfruttare il Potenziale Nativo del Web