Qual è la differenza tra forEach
e each
in D3js?D3 javascript Differenza tra foreach e ogni
risposta
Innanzitutto, .forEach()
non fa parte di d3, è una funzione nativa degli array javascript. Quindi,
E funziona anche se d3 non è caricato nella pagina.
Successivamente, d3's .each()
funziona su selezioni d3 (cosa si ottiene quando si d3.selectAll(...)
). Tecnicamente, è possibile chiamare .forEach()
in una selezione d3, poiché dietro le quinte, una selezione d3 è una matrice con funzioni extra (una di queste è .each()
). Ma non dovresti farlo perché:
Fare ciò non produrrà il comportamento desiderato. Sapere come usare
.forEach()
con una selezione d3 per produrre qualsiasi comportamento desiderato richiederebbe una comprensione intima del funzionamento interno di d3. Quindi, perché farlo, se è possibile utilizzare solo la parte pubblica documentata dell'API.Quando si chiama
.each(function(d, i) { })
su una selezione d3, si ottiene di più di un sempliced
ei
: la funzione viene invocata in modo tale che la parola chiave in qualsiasi punto all'internothis
che i punti di funzione per l'elemento HTML DOM associato cond
. In altre paroleconsole.log(this)
dall'interno difunction(d,i) {}
registrerà qualcosa come<div class="foo"></div>
o qualunque elemento html sia. E questo è utile, perché allora puoi chiamare la funzione su questo oggettothis
per cambiare le sue proprietà CSS, i contenuti o qualsiasi altra cosa. Di solito, si usa d3 per impostare queste proprietà, come ind3.select(this).style('color', '#c33');
.
L'asporto principale è che, utilizzando .each()
si ottiene l'accesso a 3 cose che avete bisogno: d
, this
e i
. Con .forEach()
, su una matrice (come nell'esempio dall'inizio) si ottengono solo 2 elementi (d
e i
) e si dovrebbe fare un sacco di lavoro per associare anche un elemento HTML a questi 2 elementi. E questo, tra le altre cose, è come d3 è utile.
- 1. Differenza tra forEach e loop in javascript
- 2. JADE: differenza tra e ogni
- 3. Differenza tra ForEach e ForEach-Object nella PowerShell
- 4. Qual è la differenza tra Groovy each e forEach?
- 5. Differenza tra la mappa e il metodo foreach in Scala?
- 6. Qual è la differenza tra D3.js e Cytoscape.js?
- 7. d3 differenza di zoom tra Chrome e Firefox
- 8. differenza tra questo e l'auto in JavaScript
- 9. Javascript: differenza tra una frase e un'espressione?
- 10. Javascript: Differenza tra location.hostname e document.domain?
- 11. Qual è la differenza tra "javascript :;" e "javascript:" nell'attributo href?
- 12. Differenza tra ThreadPool.QueueUserWorkItem e Parallel.ForEach?
- 13. D3 Transizioni tra classi
- 14. d3.json, d3.xhr e problemi tra domini
- 15. Differenza tra | = e^= css
- 16. JavaScript: Differenza tra i metodi toString() e toLocaleString() di Data
- 17. Differenza tra l'applicazione dell'attributo con d3.js vs css?
- 18. Differenza tra IIFE e chiamare
- 19. Differenza tra onclick() e onClientClick()?
- 20. Differenza tra webdriverjs e webdriverio
- 21. Elementi SVG ridimensionabili con JavaScript e D3
- 22. Differenza tra toFixed() e toPrecision()?
- 23. Differenza tra application.haml e application.html.haml?
- 24. Differenza tra onMouseOver e onMouseEnter
- 25. Javascript foreach performance del ciclo
- 26. Differenza tra OnlyOnRanToCompletion e NotOnFaulted?
- 27. Differenza Javascript tra eval() e tag script aggiunti
- 28. Qual è la differenza tra 'e "in? JavaScript
- 29. la differenza tra chiamare oggetto e funzione in javascript
- 30. Differenza tra var e questo nelle funzioni Javascript?
Spiegazione molto utile, grazie! –
Grazie per aver scritto una grande risposta, e per farlo senza includere alcuno dello snark non necessario che è così comune su SO ... –
Qui dovrebbe esserci un avvertimento: quando hai bisogno di un ambito diverso per 'questa' parola chiave ma non lo fai ' Ho bisogno di un dato nella funzione chiamata, la selezione [0] .for Ogni (...) è molto più conveniente di selection.each, che richiede un 'auto = questo' soluzione alternativa nella funzione genitore se 'questo' è significativo al di fuori del semplice riferimento Elementi DOM. – sdupton