Подсчет количества объектов в объектном литерале с помощью 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() );