Rimuovi duplicati da un array in JavaScript
-
Usa
Set
per rimuovere i duplicati in JavaScript con la sintassispread
di ECMAScript 6 -
Usa
Array.filter()
per rimuovere i duplicati dall’array JavaScript -
Usa
hashtable
per rimuovere i duplicati da un array primitivo in JavaScript -
Usa la funzione
_.uniq()
dalle librerieunderscore
eLoDash
per rimuovere i duplicati dagli array in JavaScript
![Rimuovi duplicati da un array in JavaScript](/img/JavaScript/feature-image---javascript-remove-duplicates-from-an-array.webp)
Questo tutorial spiegherà come rimuovere i duplicati da un array in JavaScript utilizzando metodi diversi. Uno dei metodi è passare l’array di destinazione al costruttore della classe Set
per restituire un array non duplicato equivalente. Un altro modo è usare il metodo filter()
dell’array JavaScript e implementare la condizione di test nella sua funzione di callback.
Usa Set
per rimuovere i duplicati in JavaScript con la sintassi spread
di ECMAScript 6
In Matematica, il set contiene un gruppo di elementi unici e non duplicati. In JavaScript, la classe Set
può ottenere tutti quegli elementi non duplicati da un array.
Con ECMAScript 6, possiamo usare la potenza della sintassi spread usando la classe Set
per ottenere un nuovo array di non duplicati da inviare al costruttore Set()
.
var arr = [1, 2, 3, 4, 1, 2, 3, 1, 2, 3]
var uniqueArr = [...new Set(arr)]
console.log(uniqueArr)
Produzione:
[1, 2, 3, 4]
Usa Array.filter()
per rimuovere i duplicati dall’array JavaScript
L’array JavaScript ha introdotto una delle funzioni di ordine superiore chiamate filter()
, che esegue un bucle su ogni elemento dell’array, applica una condizione di test su di esso e restituisce quell’elemento solo se soddisfa la condizione. Questa condizione di test sarà implementata all’interno della funzione di callback, passata come argomento al metodo filter()
.
Possiamo rimuovere i duplicati dall’array impostando la condizione di test per verificare se l’indice dell’elemento corrente in loop è la prima occorrenza in quell’array. La funzione filter()
prenderà un argomento extra pos
che rappresenterà l’indice dell’array dell’elemento durante l’esecuzione.
var arrTwo = ['Hello 1 ', ' Hello 2 ', 'Hello 1 ', ' Hello 2 ', 'Hello 1 again']
const filteredArray = arrTwo.filter(function(ele, pos) {
return arrTwo.indexOf(ele) == pos;
})
console.log('The filtered array ', filteredArray);
Produzione:
The filtered array (3) ["Hello 1 ", " Hello 2 ", "Hello 1 again"]
Se possiamo utilizzare la sintassi della freccia JavaScript ECMAScript 6, tale operazione di rimozione dei duplicati verrà implementata in un modo migliore.
var arrTwo =
['Hello 1 ', ' Hello 2 ', 'Hello 1 ', ' Hello 2 ', 'Hello 1 again'];
const filteredArray = arrTwo.filter((ele, pos) => arrTwo.indexOf(ele) == pos);
console.log('The filtered array', filteredArray);
Produzione:
The filtered array (3) ["Hello 1 ", " Hello 2 ", "Hello 1 again"]
Usa hashtable
per rimuovere i duplicati da un array primitivo in JavaScript
Se abbiamo un array composto solo da tipi primitivi come i numeri [ 1, 2, 3, 4, 1, 2, 3 ]
e vogliamo rimuovere i duplicati da quell’array [ 1, 2, 3, 4 ]
possiamo implementare la nostra funzione filterArray()
usando hashtables
.
Costruiremo un oggetto temporaneo chiamato found
che includerà tutti i valori non duplicati. All’interno della funzione filter
, la nostra condizione restituirà false
se l’elemento esiste già nell’oggetto found
; altrimenti, aggiungeremo quell’elemento all’oggetto found
con il valore true
;
var arrThree =
[
'Hello 1 ', ' Hello 2 ', ' Hello 2 ', 'Welcome', 'Hello 1 again',
'Welcome', 'Goodbye'
]
function filterArray(inputArr) {
var found = {};
var out = inputArr.filter(function(element) {
return found.hasOwnProperty(element) ? false : (found[element] = true);
});
return out;
}
const outputArray = filterArray(arrThree);
console.log('Original Array', arrThree);
console.log('Filtered Array', outputArray);
Produzione:
Original Array ["Hello 1 ", " Hello 2 ", " Hello 2 ", "Welcome", "Hello 1 again", "Welcome", "Goodbye"]
Filtered Array ["Hello 1 ", " Hello 2 ", "Welcome", "Hello 1 again", "Goodbye"]
Usa la funzione _.uniq()
dalle librerie underscore
e LoDash
per rimuovere i duplicati dagli array in JavaScript
Se stiamo già usando uno dei metodi della libreria underscore
, possiamo usare il metodo _.uniq()
, poiché restituisce solo la prima occorrenza dell’elemento dall’array di input.
var arrFive = [1, 2, 3, 1, 5, 2];
console.log('LoDash output', _.uniq(arrFive));
LoDash output [1, 2, 3, 5]
possiamo importare la libreria da qui.