Editar: ¡Lea la pregunta antes de cerrarla! La respuesta sugerida no tiene nada que ver con lo que pregunté. No busco una solución de matriz única, estoy usando dos matrices...
Estoy deduplicando una matriz, pero cuando busco la diferencia, no encuentra ninguna porque lo que hay en la nueva matriz está en la matriz anterior:
const original = [1,2,2,3,4] const newArr = Array.from(new Set(original).values()); const diff = original.filter(line => !newArr.includes(line));
Lo que espero encontrar es que la diferencia encontrada sea 2
. En mi ejemplo real, estoy usando direcciones de billetera criptográfica y necesito desduplicar la lista, pero también quiero imprimir para mostrar cuáles son las diferencias entre la matriz original y la nueva matriz.
Ejemplo
Dada la siguiente entrada
123asd123asd123 123asd123asd123 890wer890wer809
Espero el siguiente resultado
Deduplication complete! Wallet 123asd123asd123 - Duplicate removed
Respondiendo a mi propia pregunta. Lo que quería encontrar era la diferencia entre la matriz original y la matriz después de que se desduplicara para poder mostrarle al usuario qué elementos se eliminaron. El uso de las respuestas sugeridas o existentes de otras preguntas solo elimina los duplicados y/o no tiene en cuenta los duplicados y, por lo tanto, no los detecta.
Mi solución actual
const original = [ "apple", "apple", "banana", "orange", "apple", ] // After deduplication, code omitted for clarity // deduped = Array.from(new Set(original).values()); const deduped = [ "banana", "orange", "apple", ] // Now lets find the differences let diff = original.slice() for (let i = 0; i < deduped.length; i++) { const item = deduped[i]; if (diff.includes(line)) { diff.splice(diff.indexOf(line), 1); } } // Display the difference of what is not in the deduced array console.log(diff);
producción
["apple", "apple"]
Lo anterior funciona en TS. No, no contiene anotaciones de tipo, pero tampoco requiere agregarlas como otras respuestas. Puede que no sea el más sucinto, esto resolvió mi problema.
Estoy usando esto para una función de formato, donde quiero ver todos los cambios realizados entre dos archivos de texto por línea.