Il metodo filter

Il metodo filter permette di filtrare gli elementi di un array, mantenendo solo quelli che soddisfano una determinata condizione. Il metodo riceve come parametro una funzione, che verrà eseguita per ogni elemento dell'array. Il metodo restituisce come risultato un nuovo array, che conterrà solo gli elementi per i quali la funzione fornita restituisce true.

Alla funzione possono essere passati tre parametri. Se questi parametri sono presenti (non sono obbligatori), allora nel primo andrà automaticamente l'elemento dell'array, nel secondo andrà il suo numero nell'array (indice), e nel terzo - l'array stesso.

Sintassi

javascriptlet nuovoArray = array.filter(function(elemento, indice, array) {
  codice
  return true o false
});

Esempio

Filtriamo l'array, mantenendo in esso solo i numeri positivi:

javascriptlet arr = [-2, 5, 1, -5, -1, 1, 3, 4, -1];

let res = arr.filter(function(elem) {
  if (elem >= 0) {
    return true;
  } else {
    return false;
  }
});

console.log(res);

Risultato dell'esecuzione del codice:

javascript[5, 1, 1, 3, 4]

Esempio

Accorciamo il codice, utilizzando una funzione freccia:

javascriptlet arr = [-2, 5, 1, -5, -1, 1, 3, 4, -1];

let res = arr.filter(elem => {
  if (elem >= 0) {
    return true;
  } else {
    return false;
  }
});

console.log(res);

Risultato dell'esecuzione del codice:

javascript[5, 1, 1, 3, 4]

Esempio

Accorciamo il codice, utilizzando l'accorciamento delle operazioni logiche:

javascriptlet arr = [-2, 5, 1, -5, -1, 1, 3, 4, -1];

let res = arr.filter(elem => {
  return elem >= 0;
});

console.log(res);

Risultato dell'esecuzione del codice:

javascript[5, 1, 1, 3, 4]

Esempio

Accorciamo il codice, sfruttando le caratteristiche delle funzioni freccia:

javascriptlet arr = [-2, 5, 1, -5, -1, 1, 3, 4, -1];
let res = arr.filter(elem => elem > 0);

console.log(res);

Risultato dell'esecuzione del codice:

javascript[5, 1, 1, 3, 4]

Esempio

Se necessario, nel terzo parametro può essere passato l'array stesso:

javascriptlet res = arr.filter(function(elem, index, arr) {
  qui sarà accessibile l'array arr
});

Vedi anche

  • metodi map e forEach,
    che permettono di applicare una funzione a ogni elemento dell'array
  • metodi some e every,
    che eseguono un controllo sull'array
  • metodi reduce e reduceRight,
    che riducono l'array a un singolo valore