Domanda

Mi sono sempre chiesto quale fosse la differenza tra loro. Sembrano tutti fare la stessa cosa ...

È stato utile?

Soluzione

La differenza è nei valori di ritorno.

.map() Restituisce una nuova serie di oggetti Creato intraprendendo un po 'di azione sull'oggetto originale.

.every() Restituisce un booleano - Vero se ogni elemento in questo array soddisfa la funzione di test fornita. Una differenza importante con .every() è che la funzione di test potrebbe non essere sempre chiamata per ogni elemento nell'array. Una volta che la funzione di test restituisce false per qualsiasi elemento, non sono più elementi di array. Pertanto, la funzione di test di solito dovrebbe avere no effetti collaterali.

.forEach() non restituisce nulla - Itera l'array eseguendo un'azione data per ogni elemento nell'array.

Leggi di questi e di molti altri Metodi di iterazione dell'array su MDN.

Altri suggerimenti

La risposta di Gilly3 è fantastica. Volevo solo aggiungere un po 'di informazioni su altri tipi di funzioni di "loop attraverso elementi".

  • .every() (smette di ciclismo la prima volta che l'iteratore restituisce falso o qualcosa di falso)
  • .some() (smette di loop per la prima volta che l'iteratore restituisce vero o qualcosa di verità)
  • .filter() (Crea un nuovo array che include elementi in cui la funzione del filtro restituisce vera e omette quelli in cui restituisce false)
  • .map() (crea un nuovo array dai valori restituiti dalla funzione iteratore)
  • .reduce() (crea un valore ripetuto chiamando l'iteratore, passando nei valori precedenti; vedere le specifiche per i dettagli; utile per sommare il contenuto di un array e molte altre cose)
  • .reduceRight() (come ridurre, ma funziona in discesa piuttosto che in ordine crescente)

Credito a: tjcrowder Per ogni array in JavaScript?

Un'altra considerazione per le grandi risposte di cui sopra è il concatenamento. Con foreach () non puoi catena, ma con map (), puoi.

Per esempio:

var arrayNumbers = [3,1,2,4,5];

arrayNumbers.map(function(i) {
    return i * 2
}).sort();

Con .Foreach (), non puoi fare il .sort (), otterrai un errore.

Per Ramda, la differenza tra R.map() e R.forEach() è:

  1. R.forEach() restituisce l'array originale mentre R.map() Restituisce un funtore
  2. R.forEach() può operare solo su array ma R.map() Può anche operare su un oggetto (cioè le coppie chiave/valore dell'oggetto sono trattate come un array)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top