Mi sono sempre chiesto quale fosse la differenza tra loro. Sembrano tutti fare la stessa cosa ...
Mi sono sempre chiesto quale fosse la differenza tra loro. Sembrano tutti fare la stessa cosa ...
Risposte:
La differenza è nei valori di ritorno.
.map()
restituisce un nuovo array di oggetti creati eseguendo un'azione sull'elemento originale.
.every()
restituisce un valore booleano - vero se ogni elemento in questo array soddisfa la funzione di test fornita. Una differenza importante .every()
è che la funzione di test potrebbe non essere sempre chiamata per ogni elemento dell'array. Una volta che la funzione di test restituisce false per qualsiasi elemento, non vengono più iterati gli elementi dell'array. Pertanto, la funzione di test di solito non dovrebbe avere effetti collaterali .
.forEach()
non restituisce nulla : itera l'Array eseguendo una determinata azione per ogni elemento nell'Array.
Leggi questi e molti altri metodi di iterazione di Array su MDN .
La risposta di gilly3 è fantastica. Volevo solo aggiungere un po 'di informazioni su altri tipi di funzioni di "ciclo tra elementi".
.every()
(interrompe il ciclo la prima volta che l'iteratore restituisce falso o qualcosa di falso).some()
(interrompe il ciclo la prima volta che l'iteratore restituisce vero o qualcosa di vero).filter()
(crea un nuovo array includendo elementi in cui la funzione di filtro restituisce true e omettendo quelli in cui restituisce false).map()
(crea un nuovo array dai valori restituiti dalla funzione iteratore).reduce()
(costruisce un valore chiamando ripetutamente l'iteratore, passando i valori precedenti; vedere le specifiche per i dettagli; utile per sommare il contenuto di un array e molte altre cose).reduceRight()
(come reduce, ma funziona in ordine decrescente anziché ascendente)credito a: TJCrowder For-each su un array in JavaScript?
Un'altra considerazione per le grandi risposte di cui sopra è il concatenamento. Con forEach () non puoi concatenare, 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 .sort (), riceverai un errore.
Per Ramda , la differenza tra R.map()
e R.forEach()
è:
R.forEach()
restituisce l'array originale mentre R.map()
restituisce un funtoreR.forEach()
può operare solo su un array ma R.map()
può anche operare su un oggetto (cioè le coppie chiave / valore dell'oggetto sono trattate come un array)
every
eforEach
non sono metodi jQuery, penso che sia improbabile che la domanda si riferisca a jQuery in alcun modo. developer.mozilla.org/en/JavaScript/New_in_JavaScript/1.6