Подсчет количества объектов в объектном литерале с помощью Jquery
код:
var animals = {
"elephant": {
"name" : "Bingo",
"age" : "4"
},
"Lion": {
"name" : "Tango",
"age" : "8"
},
"Tiger": {
"name" : "Zango",
"age" : "7"
}
}
Я хочу подсчитать количество объектов, использующих jQuery в этом объектном литерале.
3 ответов
можно использовать Object.keys(animals).length
или
var count = 0;
for (var animal in animals) {
if (animals.hasOwnProperty(animal)) {
count++;
}
}
// `count` now holds the number of object literals in the `animals` variable
или одно из многих решений jQuery, которые могут быть или не быть наиболее эффективными:
var count = $.map(animals, function(n, i) { return i; }).length;
Если вы хотите что-то кросс-браузер, который также работает на IE8, вы не можете сделать это в очень чистом виде (см. совместимость свойства keys).
Я предлагаю так :
var n = 0;
for (var _ in animals) n++;
(поскольку это литерал объекта, нет необходимости в hasOwnProperty)
вы не можете использовать массив?
в любом случае, в объект, вы можете сделать это:
Object.prototype.length = function() {
var count = 0, k=null;
for (k in this) {
if (this.hasOwnProperty(k)) count++;
}
return count;
}
console.log( animals.length() );