affatto, gli Array associativi (sempre che questa definizione abbia un senso) sono supportati e comeOriginariamente inviato da nourdine
bene bene vfedo che confermi la mia posizione.
risultato?codice:var a = [1,2,3]; a.pippo = "pluto"; for(var key in a) alert(key);
0
1
2
pippo
array associativo ... la length con gli array associativi non c'entra un granchè ... il count di PHP è questo (e PHP è stracolmo di ambiguità):
ma essendo Array un Array, e non un HashTable, e sapendo che gli array lavorano su indici numerici, qualora la length restituisse 4 contando erroneamente anche l'associazione, dato che è un Array, come potresti fare un loop ?codice:var a = [1,2,3]; a.pippo = "pluto"; function count(Object){ var i = 0, key; for(key in Object) if(Object.hasOwnProperty(key)) ++i; return i; }; alert(count(a)); // 4
Ovviamente un Array deve poter essere looppato in questo modo ... perchè il foreach o for che sia, non garantisce alcun ordine, seppur sia spesso quello sperato.codice:var a = [1,2,3]; a.pippo = "pluto"; for(var i = 0; i < a.length; i++) alert(a[i]);
Fosse come dici tu, cosa faresti per un loop di Array, questo?
e come la mettiamo con Array che hanno lenght fissata ma non necessariamente tutti i valori settati?codice:for(var i = 0; a[i] !== undefined; i++) alert(a[i]);
Sunto: JavaScript supporta gli Array, chi pensa che gli Array possano essere usati come associativi (che "non esistono", sono Hash Tables) e debbano contare tutto, non creerà molto codice con gli Array veri, tanto vale che utilizza un instanza di Objectcodice:var a = new Array(10); a[2] = 2;![]()


Rispondi quotando