Programación funcional - Aplicar programación funcional para convertir cadenas a slugs de URL

¿Halguien sabe por que filter(item => item) funciona para filtrar los elementos vacios del array?

Tu código hasta el momento

// Cambia solo el código debajo de esta línea
function urlSlug(title) {
  const URL = title.toLowerCase().split(/\W/).filter(item => item ).join("-")
  
  return URL;

}
// Cambia solo el código encima de esta línea
urlSlug(" Winter Is  Coming");


Información de tu navegador:

El agente de usuario es: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36

Desafío: Programación funcional - Aplicar programación funcional para convertir cadenas a slugs de URL

Enlaza al desafío:

Hola!
En este caso la funcion filter es completamente innecesaria.
Fijate que split(/\W/) lo que hace es separar ‘title’ cada vez que aparece un caracter no alfanumerico, como puede ser un espacio. Cada elemento lo guarda en un array, mientras que los elementos que no sean de caracter alfanumerico, como vienen a ser los espacios los salta. Por lo tanto en tu ejemplo split retorna el siguiente array:
['winter', 'is', 'coming']
Luego, la funcion filter(item => item) lo unico que hace es recorrer ese array, cada elemento es item y retorn item, es decir el mismo elemento. Por lo que en este caso la funcion filter estaria retornando el mismo array.
Por lo tanto, podrias hacer esta funcion en una unica linea y omitiendo la funcion del filter de este modo:

return title.toLowerCase().split(/\W/).join('-');