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

Foco con Telegram, apagador de 3 vías, relevador y ESP8266

Encender un foco con un Bot de Telegram es posible usando una tarjeta como la…

6 días hace

Servidor HTTP en Android con Flutter

El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…

3 semanas hace

Imprimir automáticamente todos los PDF de una carpeta

En este post te voy a enseñar a designar una carpeta para imprimir todos los…

3 semanas hace

Guía para imprimir en plugin versión 1 desde Android

En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…

4 semanas hace

Añadir tasa de cambio en sistema de información

Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…

1 mes hace

Comprobar validez de licencia de plugin ESC POS

Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…

1 mes hace

Esta web usa cookies.