Как узнать на javascript размер массива
Для вычисления на javascript размера массива объектов используется свойство массива length.
var arr = ["first", "second"]; console.log(arr.length); // 2
Массивы в javascript могут иметь пропуски в индексах. Например
var arr = []; arr[0] = "first"; arr[4] = "second";
Свойство length возвращает максимальный индекс массива + 1. Т.е. в приведенном примере length = 5.
Вычисление на javascript количества элементов в массиве
Если нужно посчитать количество реально существующих элементов массива, нужно воспользоваться следующей функцией:
Array.prototype.count = function(){ var result = 0; for(var i = 0; i < this.length; i++) if (this[i] != undefined) result++; return result; }
Пример использования
var arr = []; arr[0] = "first"; arr[4] = "second"; console.log(arr.count()); //2
Так же в свойство length можно присваивать значение. Это позволяет уменьшить длину существующего массива.
var arr = ["first", "second", "third"]; arr.length = 2; console.log(arr); // ["first", "second"]
Вычисление на javascript размера массива в байтах
Массивы являются обычными объектами, так что вычисление размера массива в байтах ничем не отличается от вычисления размера любого другого объекта. К сожалению, javascript не предоставляет API для вычисления размера, так что придется считать самостоятельно. Делается это следующим образом: обходим все свойства объекта, если свойство примитивного типа — добавляем к общему результату размер экземпляра этого типа, если в свойстве лежит объект — рекурсивно считаем его размер.
function sizeOf(obj) { var bytes = 0; if(obj !== null && obj !== undefined) { switch(typeof obj) { case 'number': bytes += 8; break; case 'string': bytes += obj.length * 2; break; case 'boolean': bytes += 4; break; case 'object': for(var key in obj) { bytes += sizeOf(obj[key]); } break; } } return bytes; };
Метод не точный и имеющий множество проблем — например есть вероятность уйти в бесконечный цикл.