Длина объекта в JavaScript
У меня есть объект на JavaScript. Существует ли встроенный способ или общепринятая практика для определения длины этого объекта?
Вот мой код:
const myObject = new Object();
myObject["firstname"] = "Gareth";
myObject["lastname"] = "Simpson";
myObject["age"] = 21;
Как мне получить количество свойств в этом объекте?
4 ответ(ов)
Чтобы получить length
объекта, просто используйте следующий код:
Object.keys(myObject).length
Этот метод возвращает количество собственных перечисляемых свойств объекта myObject
.
Я не эксперт в JavaScript, но, похоже, вам нужно будет пройтись по элементам и посчитать их, так как у объекта нет метода длины. Вы можете сделать это следующим образом:
var element_count = 0;
for (e in myArray) {
if (myArray.hasOwnProperty(e)) element_count++;
}
Что касается вашего комментария, @palmsey: справедливости ради, в документации JavaScript действительно упоминается, что использование переменных типа Object в таком контексте называется "ассоциативными массивами".
Этот метод получает все имена свойств вашего объекта в массиве, поэтому вы можете получить длину этого массива, которая равна количеству ключей вашего объекта.
Object.getOwnPropertyNames({"hi":"Hi","msg":"Message"}).length; // => 2
Чтобы не вмешиваться в прототип или другой код, вы можете создать и расширить свой собственный объект:
function Hash(){
var length = 0;
this.add = function(key, val){
if(this[key] === undefined) {
length++;
}
this[key] = val;
};
this.length = function(){
return length;
};
}
myArray = new Hash();
myArray.add("lastname", "Simpson");
myArray.add("age", 21);
alert(myArray.length()); // выдаст 2
Если вы всегда будете использовать метод add
, свойство length
будет корректным. Если вас беспокоит, что вы или другие забудут использовать этот метод, вы можете добавить счетчик, который будет использоваться в методе length
, как уже предлагали другие.
Конечно, вы всегда можете переопределить методы. Однако даже если вы это сделаете, ваш код, скорее всего, будет заметно давать сбой, что упростит отладку. 😉
Как удалить свойство из объекта JavaScript?
Преобразование объекта JS в строку JSON
Как получить доступ к вложенным объектам, массивам или JSON и обработать их?
Как удалить все дубликаты из массива объектов?
Почему null является объектом и в чем разница между null и undefined?