
Al empezar este blog, me inspiré en otras páginas y me di cuenta de que todas muestran el tiempo que tarda en leerse un post.
¿Pero cómo se hace? Acá el snippet 😉
function readingTime(post) {
const WORDS_PER_MINUTE = 200;
const regex = /\w+/g;
const wordCount = post.match(regex)?.length || 0;
return Math.ceil(wordCount / WORDS_PER_MINUTE);
}
Cómo funciona?
Creamos una función readingTime
, con un parametro post
que sería el texto del cual queremos determinar el tiempo de lectura.
function readingTime(post) {}
Las personas leen entre 200 y 250 palabras por minuto apróximadamente, entonces, establecemos una variable de referencia.
const WORDS_PER_MINUTE = 200;
El truco para encontrar las palabras es utilizar Regex
.
const regex = /\w+/g;
Utilizando el metodo match identificamos cuántas palabras coinciden con el regex. Al final, agregamos el operador ||
seguido de un 0
por si no encuentra coincidencias.
const wordCount = post.match(regex)?.length || 0;
Calculamos el tiempo al dividir las palabras encontradas por las palabras por minuto.
wordCount / WORDS_PER_MINUTE;
Luego, utilizando Math.ceil() obtenemos el valor aproximado:
function readingTime(post) {
const WORDS_PER_MINUTE = 200;
const regex = /\w+/g;
const wordCount = post.match(regex)?.length || 0;
return Math.ceil(wordCount / WORDS_PER_MINUTE);
}
const result = readingTime('Mi tiempo de lectura es de 1 min aprox.');
console.log(result); // resultado: 1
Si quieres un valor más aproximado puedes cambiar Math.ceil por Math.floor, Math.round o Math.trunc según te convenga más.