Esta pregunta es casi idéntica a How to efficiently count the number of keys/properties of an object in JavaScript?.Contando de manera eficiente el número de claves/propiedades de un objeto en JavaScript
Quiero saber una información adicional: ¿qué es un "constante-tiempo" forma de determinar el número de claves en un objeto? Lo que más me preocupa es hacer esto en Node.JS, ya que la mayoría de los objetos en el navegador no son demasiado grandes como para ser una gran preocupación.
EDIT: Parece que Object.keys(obj).length
retornos en O tiempo lineal (n) en Google Chrome y en Node.JS (es decir, dependientes del número de llaves en obj
). ¿Hay un mejor método O (1)?
Hice algunas pruebas en Node.JS (fuente está por debajo)
var tests = [10e3, 10e4, 10e5, 10e6]
for(j in tests) {
var obj = {};
for(i = 0; i < tests[j]; i++)
obj[i] = i;
console.time('test' + tests[j]);
Object.keys(obj).length;
console.timeEnd('test' + tests[j]);
}
Para n = 10e3, 10e4, 10e5, 10E6 ... los resultados son los siguientes:
test10000: 5ms
test100000: 20ms
test1000000: 371ms
test10000000: 4009ms
¿Has intentado probar esto? – Blender
No. Me siento flojo hoy ...:/Caso de los lunes, supongo. – BMiner
Sospecho que obtener el ".length" del resultado de llamar a "Object.keys()" es de tiempo constante, pero también sospecho que llamar a "Object.keys()" es lineal en el número de propiedades. – Pointy