Tengo una lista como esta:
[ 'test@t-online.de', 'kontakt@test.de', 'info@test.de', 'test@gmx.de', 'kontakt@test.de', ]Quiero buscar duplicados y guardar la lista en un archivo txt con un correo electrónico en cada línea. El resultado final sería en este caso:
test@t-online.de kontakt@test.de info@test.de test@gmx.defs.writeFileSync('./resultados/prueba.txt', lista)
¿Como hacer eso?
Puede realizar eso realizando un bucle a través de la matriz si los correos electrónicos y realizar un filtro para dar me gusta a continuación
let emails = [ 'test@t-online.de', 'kontakt@test.de', 'info@test.de', 'test@gmx.de', 'kontakt@test.de', ]; let result = emails.reduce((accumulator, current) => { if(accumulator.indexOf(current) === -1){ accumulator = accumulator.concat(current); } return accumulator; }, []); console.log(result);Reemplazar list con [...(new Set(list))].join('\n')
new Set() garantiza que solo se eliminen los duplicados y que solo queden elementos únicos.join('\n') transforma el Array en una cadena separada por el carácter de nueva línea ( \n ). const list = [ 'test@t-online.de', 'kontakt@test.de', 'info@test.de', 'test@gmx.de', 'kontakt@test.de', ]; console.log([...(new Set(list))].join('\n'));para eliminar correos electrónicos duplicados:
arr = [...new Set(arr)];para la escritura
var writeStream = fs.createWriteStream('./results/test.txt'); writeStream.on('error', function(e) { /* handel error here */ }); arr.forEach(email => writeStream.write(email + '\n')); writeStream.end();Para agregar datos a un archivo existente Crear flujo de escritura en modo de adición
var writeStream = fs.createWriteStream('./results/test.txt', { 'flags': 'a', 'encoding': null, 'mode': 0666});consulteaquí