Originariamente inviato da nourdine
bene bene vfedo che confermi la mia posizione.
affatto, gli Array associativi (sempre che questa definizione abbia un senso) sono supportati e come
codice:
var a = [1,2,3];
a.pippo = "pluto";
for(var key in a)
alert(key);
risultato?
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à):
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
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";
for(var i = 0; i < a.length; i++)
alert(a[i]);
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.
Fosse come dici tu, cosa faresti per un loop di Array, questo?
codice:
for(var i = 0; a[i] !== undefined; i++)
alert(a[i]);
e come la mettiamo con Array che hanno lenght fissata ma non necessariamente tutti i valori settati?
codice:
var a = new Array(10);
a[2] = 2;
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 Object