Этот вопрос почти идентичен Как эффективно подсчитать количество ключей / свойств объекта в JavaScript? .
Я хочу знать одну дополнительную информацию: что такое « постоянное время » способ определения количества ключей в объекте? В основном я занимаюсь этим в Node.JS, так как большинство объектов в браузере не слишком велики, чтобы вызывать большую озабоченность.
EDIT:
Похоже, что Object.keys(obj).length
возвращает в линейном времени O (n) в Google Chrome и в Node.JS (т.е. зависит от количества ключей в obj
). Есть ли лучший метод O (1)?
Я провел некоторое тестирование в Node.JS (источник ниже)
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]);
}
Для n = 10e3, 10e4, 10e5, 10e6 ... результаты:
test10000: 5ms
test100000: 20ms
test1000000: 371ms
test10000000: 4009ms