poichè nelle attuali versioni di javascript non esiste foreach come si può leggere tutti gli elementi di un array associativo? esiste pop e shift ma il problema è che restituiscono il valore dell'elemento e non la chiave![]()
poichè nelle attuali versioni di javascript non esiste foreach come si può leggere tutti gli elementi di un array associativo? esiste pop e shift ma il problema è che restituiscono il valore dell'elemento e non la chiave![]()
Farmacia di Jarno - le mie pillole: Cookie [#780810], Dom4Php4 [#1123236], Fade [#1139489], getCssProperty [#1152911]
Inchinatevi difronte al Prof! Nacchio!
A me pare che l'uomo vada avanti con la retromarcia
Per js gli array associativi sono oggetti.
![]()
Without faith, nothing is possible. With it, nothing is impossible
http://ilwebdifabio.it
mmhgrazie per la dritta
sono giunto ad una pagina che mi suggeriva questo... spero che sia compatibile, ho provato su IE6 quindi credo che peggio non esista
funziona alla grande!!! sono 2 righe che valgono oro. strano che nessuna guida ne parli ...Codice PHP:
var ar= new Array();
ar["a"]= "11";
ar["b"]= "12";
for (i in ar) { alert("key="+i+" value="+ar[i]);}
![]()
tanx![]()
Farmacia di Jarno - le mie pillole: Cookie [#780810], Dom4Php4 [#1123236], Fade [#1139489], getCssProperty [#1152911]
Inchinatevi difronte al Prof! Nacchio!
A me pare che l'uomo vada avanti con la retromarcia
Without faith, nothing is possible. With it, nothing is impossible
http://ilwebdifabio.it
forte...
quindi questo for / in è JS1.5 e quindi già da IE6 c'è....
ma per sicurezza avete idea se esiste una tabella che mostri le versioni di javascript nei vari browser? almeno ci regoliamo
ps: tanto lo so....mi toccherà implementare il file "normalizzante" di Andr3a...![]()
Farmacia di Jarno - le mie pillole: Cookie [#780810], Dom4Php4 [#1123236], Fade [#1139489], getCssProperty [#1152911]
Inchinatevi difronte al Prof! Nacchio!
A me pare che l'uomo vada avanti con la retromarcia
Nel nuovo framework che sto per pubblicare c'è una funzione che potrebbe fare al caso tuo:
Non serve a normalizzare il forEach anche per IE ( nota che il metodo si chiama $forEach e non forEach ).codice:Array.prototype.$forEach = function(callback, thisObj) { var thisObj = thisObj || this, value; if(this.length == 0 && !this.item) { for(var i in this) { if(!this.constructor.prototype[i]) { value = callback.call(thisObj, this[i], i, this) || null; if(value !== null) { if(value === "break") break; if(value === "continue") continue; } } } } else { for(var i = 0, l = this.length; i!=l; i++) { if(i in this) { value = callback.call(thisObj, this[i], i, this) || null; if(value !== null) { if(value === "break") break; if(value === "continue") continue; } } } } }
Il vantaggio di questa funzione rispetto all'originale è che funziona anche con array associativi senza dare problemi coi prototipi.
Attenzione però, se un array associativo contiene anche solo una voce con indice numerico tipo [0] o [1] incasini tutto...
per quanto uno creda di conoscere certe argomentazioni, trovare il tempo di studiare certe letture è sempre veramente illuminante
grazie.
quindi:
- in javascript gli "array misti" in realtà non esistono,
difatti "length" si riferisce solo all'array con indice numerico, e non a quello associativo.
- inoltre questo non ha senso:
praticamente nell'esempio di apertura ho inizializzato inutilmente un array, ma successivamente ho lavorato con un oggetto che ha lo stesso nome, ma che javascript riesce a distinguere caso per caso se mi riferisco all'array o all'oggetto.Codice PHP:
var ar= new Array();
giusto?
Farmacia di Jarno - le mie pillole: Cookie [#780810], Dom4Php4 [#1123236], Fade [#1139489], getCssProperty [#1152911]
Inchinatevi difronte al Prof! Nacchio!
A me pare che l'uomo vada avanti con la retromarcia
massicciaOriginariamente inviato da Mega69
Nel nuovo framework che sto per pubblicare c'è una funzione che potrebbe fare al caso tuo:
...![]()
bel lavoro
ma 2 domande:
- l'else che parte nel caso di array con indice numerico, è proprio necessario? il for/in funziona anche con essi no?
- l'uso di if/in come funziona? :master:
Farmacia di Jarno - le mie pillole: Cookie [#780810], Dom4Php4 [#1123236], Fade [#1139489], getCssProperty [#1152911]
Inchinatevi difronte al Prof! Nacchio!
A me pare che l'uomo vada avanti con la retromarcia
Domanda: l'else che parte nel caso di array con indice numerico, è proprio necessario? il for/in funziona anche con essi no?
Risposta: In teoria si, in pratica ci sono tre problemi. Il for in "mostra" le proprietà in un ordine arbitrario, ad esempio potrebbe richiamare prima l'elemento 1, poi il 5 e così via. Oltre a ciò c'è il rischio che se l'Array possiede una qualche proprietà questa venga inclusa nel for-in. Infine nel for in ogni chiave viene trattata come stringa, perciò la natura di una chiave potrebbe essere piuttosto ambigua perchè nulla mi vieta di scrivere myArray['0'] = "ciao".
Viste queste problematiche vale la pena scrivere qualche riga in più piuttosto che arrischiarsi.
Domanda: l'uso di if/in come funziona
Risposta: Serve a controllare se l'oggetto possiede una particolare proprietà. E' molto "figo" perchè il controllo restituisce true anche se la proprietà ha valore undefined o null. Questa sua particolarità permette ad esempio di controllare se il browser possiede un particolare stile.
bene, anche perchè confermi quindi le mie osservazioni, quindi nell'esempio di apertura io ho inizializzato un array, ma poi ho praticamente inserito delle proprietà ad un array che è rimasto vuoto...forte...Originariamente inviato da Mega69
Domanda: l'else che parte nel caso di array con indice numerico, è proprio necessario? il for/in funziona anche con essi no?
Risposta: In teoria si, in pratica ci sono tre problemi. Il for in "mostra" le proprietà in un ordine arbitrario, ad esempio potrebbe richiamare prima l'elemento 1, poi il 5 e così via. Oltre a ciò c'è il rischio che se l'Array possiede una qualche proprietà questa venga inclusa nel for-in. Infine nel for in ogni chiave viene trattata come stringa, perciò la natura di una chiave potrebbe essere piuttosto ambigua perchè nulla mi vieta di scrivere myArray['0'] = "ciao".
Viste queste problematiche vale la pena scrivere qualche riga in più piuttosto che arrischiarsi.
orgasmico, mi cerco qualche esempio pratico per capire meglio ... ma 'ste cose mi fanno impazzireOriginariamente inviato da Mega69
Domanda: l'uso di if/in come funziona
Risposta: Serve a controllare se l'oggetto possiede una particolare proprietà. E' molto "figo" perchè il controllo restituisce true anche se la proprietà ha valore undefined o null. Questa sua particolarità permette ad esempio di controllare se il browser possiede un particolare stile.![]()
Farmacia di Jarno - le mie pillole: Cookie [#780810], Dom4Php4 [#1123236], Fade [#1139489], getCssProperty [#1152911]
Inchinatevi difronte al Prof! Nacchio!
A me pare che l'uomo vada avanti con la retromarcia