En este corto post de JavaScript te enseñaré a eliminar líneas repetidas (no de código, sino de algún texto o párrafo).
Esto nos servirá para eliminar elementos repetidos de una lista, por ejemplo un arreglo de cadenas, o de una cadena con varios saltos de línea.
Lo haremos de una manera limpia con JavaScript.
Eliminar líneas duplicadas
En este caso yo tengo una cadena con varias líneas separadas por un salto de línea, así:
app/Http/Controllers/CancionSolicitadaController.php
resources/views/canciones_solicitadas/index.blade.php
app/Http/Controllers/CancionSolicitadaController.php
app/Http/Controllers/ReporteController.php
app/Http/Controllers/ReporteController.php
resources/views/reportes/pdf.blade.php
app/Http/Controllers/ReporteController.php
app/Models/CancionSolicitada.php
resources/views/reportes/index.blade.php
resources/views/reportes/pdf.blade.php
resources/views/master.blade.php
resources/views/master.blade.php
Y quiero eliminar las duplicadas, para que solo aparezcan una vez. Como es una cadena, debo convertirla a arreglo con split.
Cuando sea un arreglo ya podemos eliminar los duplicados fácilmente creando un conjunto o Set
; aquí es donde ocurre la magia pues un conjunto no puede tener elementos repetidos.
const lineasComoArreglo = `app/Http/Controllers/CancionSolicitadaController.php
resources/views/canciones_solicitadas/index.blade.php
app/Http/Controllers/CancionSolicitadaController.php
app/Http/Controllers/ReporteController.php
app/Http/Controllers/ReporteController.php
resources/views/reportes/pdf.blade.php
app/Http/Controllers/ReporteController.php
app/Models/CancionSolicitada.php
resources/views/reportes/index.blade.php
resources/views/reportes/pdf.blade.php
resources/views/master.blade.php
resources/views/master.blade.php`.split("\n");
const conjunto = new Set(lineasComoArreglo);
Ya tenemos el conjunto y tiene las cadenas sin repetir, ahora falta convertirlo de vuelta a arreglo, cosa que podemos hacer con Array.from
:
const lineasComoArreglo = `app/Http/Controllers/CancionSolicitadaController.php
resources/views/canciones_solicitadas/index.blade.php
app/Http/Controllers/CancionSolicitadaController.php
app/Http/Controllers/ReporteController.php
app/Http/Controllers/ReporteController.php
resources/views/reportes/pdf.blade.php
app/Http/Controllers/ReporteController.php
app/Models/CancionSolicitada.php
resources/views/reportes/index.blade.php
resources/views/reportes/pdf.blade.php
resources/views/master.blade.php
resources/views/master.blade.php`.split("\n");
const conjunto = new Set(lineasComoArreglo);
const arregloSinRepetidos = Array.from(conjunto);
const lineasSinRepetir = arregloSinRepetidos.join("\n");
Y después unimos el arreglo con join, usando el salto de línea como pegamento para unirlo. Ahora las líneas sin repetir son las siguientes:
app/Http/Controllers/CancionSolicitadaController.php
resources/views/canciones_solicitadas/index.blade.php
app/Http/Controllers/ReporteController.php
resources/views/reportes/pdf.blade.php
app/Models/CancionSolicitada.php
resources/views/reportes/index.blade.php
resources/views/master.blade.php
Por cierto, si quisieras ordenarlas solo debes invocar a sort antes de unir con join
, por defecto sort los ordenará de manera alfabética si es que son cadenas.
Bonus
En mi caso lo dejé todo en una sola línea, así (incluyendo el ordenamiento por alfabeto):
console.log(Array.from(new Set(`app/Http/Controllers/CancionSolicitadaController.php
resources/views/canciones_solicitadas/index.blade.php
app/Http/Controllers/CancionSolicitadaController.php
app/Http/Controllers/ReporteController.php
app/Http/Controllers/ReporteController.php
resources/views/reportes/pdf.blade.php
app/Http/Controllers/ReporteController.php
app/Models/CancionSolicitada.php
resources/views/reportes/index.blade.php
resources/views/reportes/pdf.blade.php
resources/views/master.blade.php
resources/views/master.blade.php`.split("\n"))).sort().join("\n"))
Ya que necesito ejecutar ese fragmento de código varias veces y es mejor tenerlo simple, pero si lo vas a usar en un script o código lo mejor es separarlo en una función.
Con esto podemos quitar líneas que se repiten y además ordenarlas de manera alfabética.
Por aquí te dejo más tutoriales de JavaScript.