Sto provando a utilizzare l'oggetto JavaScript come array associativo e tutto è andato bene finché non ho avuto bisogno di ottenere il numero di voci che sono state memorizzate. Qual è il modo più semplice ed elegante per farlo? Tutto quello che posso pensare è eseguire la funzione loop for each
o jQuery $.each
e vedere solo quante iterazioni farebbe, ma sembra una cosa orribile da fare.Come ottengo il numero di campi nell'oggetto JavaScript?
risposta
Il vecchio Firefox supporta la proprietà __count__
. Gli ambienti più recenti supportano gli ES5 Object.keys
. Per gli ambienti più anziani dobbiamo fallback a poco l'iterazione sopra l'oggetto e il conteggio manuale (ugh!):
function count(obj) {
if (obj.__count__ !== undefined) { // Old FF
return obj.__count__;
}
if (Object.keys) { // ES5
return Object.keys(obj).length;
}
// Everything else:
var c = 0, p;
for (p in obj) {
if (obj.hasOwnProperty(p)) {
c += 1;
}
}
return c;
}
Si riduce a questo, o si mantiene il conto quando si aggiungono e si eliminano le proprietà dall'oggetto.
sfortunatamente non c'è davvero un buon modo per conoscere il numero di proprietà in un oggetto senza iterare su di esse. Quanto segue è abbastanza semplice:
Credo che questo sia stato risolto qui prima, e/o googling può portarvi nella giusta direzione. Tuttavia vorrei sottolineare che uno dei più grandi grattacapi se si utilizza un ciclo in forma di:
for (var attr in obj) { ....
è che l'oggetto potrebbe essere ingombra di proprietà non hai necessariamente aggiungere, e la soluzione standard a questo come Ricordo che è necessario utilizzare il test per hasOwnProperty, vedere https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Object/hasOwnProperty
questo ha funzionato per me:
Object.keys(obj).length
IE specifico sembra (vedi la risposta di James) –
Questo dovrebbe essere contrassegnato come la risposta corretta. –
- 1. R: Come ottengo il numero di Eulero?
- 2. Come ottengo il numero di visualizzazioni in Windows?
- 3. Come ottengo il numero di versione da una libreria statica?
- 4. WTForms crea il numero variabile di campi
- 5. javascript se il numero maggiore di numero
- 6. Come ottengo l'ora corrente solo in JavaScript
- 7. Python Quando rilevo un'eccezione, come ottengo il tipo, il file e il numero di riga?
- 8. Numero intero Javascript
- 9. Come ottengo l'ora del giorno in javascript/Node.js?
- 10. Ottieni il numero di build di IE 11 da javascript
- 11. Utilizzo di Python 2.6 come ottengo il giorno del mese come numero intero?
- 12. Come ottengo l'opacità di un elemento usando Javascript?
- 13. Come ottengo il numero di versione di un modulo python tramite codice?
- 14. javascript come trovare il numero di bambini in un oggetto
- 15. Come ottengo il contesto dall'intento?
- 16. Come ottengo il codice sorgente di Ubuntu?
- 17. Come ottengo il tipo di una variabile?
- 18. Come ottengo un numero casuale nel toolkit modello?
- 19. array JavaScript al numero
- 20. Query aggregata annidata SQL- Come ottengo il numero di clienti per dipendente?
- 21. Oracle: come ottengo il numero di sequenza della riga appena inserito?
- 22. Come ottengo il numero di secondi tra due DateTimes in Ruby on Rails
- 23. Moment.js - come ottengo il numero di anni da una data, non arrotondato?
- 24. Come ottengo il contatore di un pulsante google plus +1?
- 25. convertire il numero in lettera javascript
- 26. Il numero in JavaScript è immutabile?
- 27. JavaScript numero libreria grande?
- 28. javascript/jquery: come ottengo l'altezza della finestra interna?
- 29. Quando rilevo un'eccezione, come ottengo il tipo, il file e il numero di riga del fotogramma precedente?
- 30. Il modo più semplice per ottenere il numero di decimali in un numero in JavaScript
Oh mio dio, O (n) per ottenere il numero di voci in una mappa ... Beh, questo fa schifo. :/ – fgysin
(Non dire che la risposta non è corretta btw. Appena deluso da JS ...) – fgysin
Cosa significano i vecchi browser? Vedi: http://kangax.github.io/compat-table/es5/#Object.keys – leo