Calcular tiempo de lectura en Javascript

- 2 mins de lectura
Reloj de arena junto a tres dados

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.