Rimuovi duplicati da un array in JavaScript

Moataz Farid 12 ottobre 2023
  1. Usa Set per rimuovere i duplicati in JavaScript con la sintassi spread di ECMAScript 6
  2. Usa Array.filter() per rimuovere i duplicati dall’array JavaScript
  3. Usa hashtable per rimuovere i duplicati da un array primitivo in JavaScript
  4. Usa la funzione _.uniq() dalle librerie underscore e LoDash per rimuovere i duplicati dagli array in JavaScript
Rimuovi duplicati da un array in JavaScript

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.

Articolo correlato - JavaScript Array