Altro
Come contare in modo efficiente il numero di chiavi/proprietà di un oggetto in JavaScript?
Qual è il modo più veloce per contare il numero di chiavi/proprietà di un oggetto? È possibile farlo senza iterare sull'oggetto, cioè senza fare
var count = 0;
for (k in myobj) if (myobj.hasOwnProperty(k)) count++;
(Firefox forniva una proprietà magica __count__
, ma questa è stata rimossa da qualche parte intorno alla versione 4).
1444
3
Se stai effettivamente incontrando un problema di prestazioni, suggerirei di avvolgere le chiamate che aggiungono/rimuovono le proprietà da/all'oggetto con una funzione che incrementa/decrementa anche una proprietà dal nome appropriato (dimensione?).
Hai solo bisogno di calcolare il numero iniziale di proprietà una volta e andare avanti da lì. Se non c'è un vero problema di prestazioni, non preoccupatevi. Avvolgi semplicemente quel pezzo di codice in una funzione
getNumberOfProperties(object)
e falla finita.Non sono a conoscenza di alcun modo per farlo, tuttavia per mantenere le iterazioni al minimo, si potrebbe provare a controllare l'esistenza di
__count__
e se non esiste (cioè non Firefox) allora si potrebbe iterare l'oggetto e definirlo per un uso successivo, ad esempio:In questo modo ogni browser che supporta
__count__
lo userebbe, e le iterazioni sarebbero effettuate solo per quelli che non lo fanno. Se il conteggio cambia e non puoi farlo, potresti sempre renderlo una funzione:In questo modo ogni volta che si fa riferimento a myobj.
__count__
la funzione si attiverà e ricalcolerà.Non credo che questo sia possibile (almeno non senza usare alcuni interni). E non credo che si guadagnerebbe molto ottimizzando questo.