javascript

JavaScript: eliminar líneas repetidas

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.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Creador de credenciales web – Aplicación gratuita

Hoy te voy a presentar un creador de credenciales que acabo de programar y que…

17 horas hace

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

1 semana hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

1 semana hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

1 semana hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

1 semana hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

1 semana hace

Esta web usa cookies.