Estoy tratando de usar el objeto JavaScript como una matriz asociativa y todo estaba bien hasta que necesité obtener el número de entradas que están almacenadas en él. ¿Cuál es la forma más fácil y más elegante de hacer eso? Todo lo que puedo pensar es ejecutar la función for each
loop o jQuery $.each
y solo ver cuantas iteraciones haría pero parece una cosa horrible de hacer.¿Cómo obtengo el número de campos en el objeto JavaScript?
Respuesta
Old Firefox admite la propiedad __count__
. Los entornos más nuevos admiten ES5 Object.keys
. Para los entornos de mayor edad tenemos que vuelve a los simplemente iterar sobre el objeto y contando manualmente (uf!):
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;
}
Todo se reduce a eso, o al contar cuando agrega y elimina propiedades del objeto.
Desafortunadamente no hay realmente una buena manera de saber el número de propiedades en un objeto sin iterar sobre ellas. Lo siguiente es bastante simple:
function countProps(obj) {
var l = 0;
for (p in obj) l++;
return l;
}
var bob = { a: 1, b: 2};
alert(countProps(bob));
Creo que esto ha sido respondido aquí anteriormente, y/o googlear puede guiarlo en la dirección correcta. Sin embargo permítanme señalar que una de las mayores trampas si se utiliza un bucle en forma de:
for (var attr in obj) { ....
es que el objeto podría estar atestado de propiedades que no siempre suman, y la solución estándar a esto como Recuerdo que es necesario utilizar adicionalmente la prueba para hasOwnProperty, vea https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Object/hasOwnProperty
Esto funcionó para mí:
Object.keys(obj).length
Específico de IE, parece (ver la respuesta de James) –
Esto debe marcarse como la respuesta correcta. –
- 1. javascript cómo encontrar el número de hijos en un objeto
- 2. ¿Cómo obtengo el objeto org.apache.catalina.connector.Request en Tomcat?
- 3. ¿Cómo obtengo el MIN() de dos campos en Postgres?
- 4. Determinar cuántos campos tiene un objeto Javascript
- 5. ¿Cómo obtengo el número de mes del año y el número de semana en C#?
- 6. ¿Cómo obtengo el objeto Window del objeto Document?
- 7. Javascript - Objeto número-> valor
- 8. Objeto Javascript: tecla que comienza con el número, ¿permitido?
- 9. Programación R: ¿Cómo obtengo el número de Euler?
- 10. ¿Cómo obtengo el número de filas que tienen columnas duplicadas?
- 11. Python: ¿Cómo obtengo el tiempo de un objeto datetime.timedelta?
- 12. ¿Cómo obtengo el elemento previamente enfocado en JavaScript?
- 13. ¿Cómo obtengo el nombre para mostrar de un objeto IdentityReference?
- 14. Javascript empujando el objeto en el arreglo
- 15. ¿Cómo obtener los campos de un objeto?
- 16. Truncar/redondear el número entero en JavaScript?
- 17. Extendiendo el prototipo Number en javascript y el objeto Math?
- 18. ¿Cómo obtengo el objeto Método para un método?
- 19. ¿Es predecible el orden de los campos en un objeto javascript al recorrerlos?
- 20. ¿Cómo puedo determinar el número de línea actual en JavaScript?
- 21. Socket.io cómo enviar el objeto JavaScript
- 22. ¿El número en JavaScript es inmutable?
- 23. ¿Cómo obtener el control de javascript desde el objeto JQuery?
- 24. ¿Cómo obtengo el índice de un objeto en un NSArray usando el valor de cadena?
- 25. ¿Cómo obtengo el valor de una clave externa en lugar de obtener el objeto?
- 26. Javascript/jQuery - Obtener el número de secuencia
- 27. JavaScript - Creando el objeto JSON
- 28. Contando de manera eficiente el número de claves/propiedades de un objeto en JavaScript
- 29. ¿Por qué el número ([]) === 0 y el número ({}) === NaN en Javascript?
- 30. ¿Cómo funciona el encadenamiento básico de objeto/función en javascript?
Oh mi dios, O (n) para obtener el número de entradas en un mapa ... Bueno, esto apesta. :/ – fgysin
(No estoy diciendo que su respuesta no sea correcta, por cierto. Solo me decepcionó JS ...) – fgysin
¿Qué significa navegadores antiguos? Ver: http://kangax.github.io/compat-table/es5/#Object.keys – leo