Maison  >  Article  >  interface Web  >  Comment jQuery obtient-il et calcule-t-il la longueur d’un objet ?

Comment jQuery obtient-il et calcule-t-il la longueur d’un objet ?

伊谢尔伦
伊谢尔伦original
2017-06-17 13:26:044138parcourir

Dans notre développement quotidien, l'objet est utilisé très fréquemment. Il nous est très pratique de calculer la longueur du tableau, mais comment calculer la longueur de l'objet ? Supposons que nous ayons un projet de bibliothèque avec un ensemble de livres et d'auteurs, comme celui-ci :

var bookAuthors = {
    "Farmer Giles of Ham": "J.R.R. Tolkien",
    "Out of the Silent Planet": "C.S. Lewis",
    "The Place of the Lion": "Charles Williams",
    "Poetic Diction": "Owen Barfield"
};

Nous analysons les besoins actuels et nous envoyons des données à une API, mais la longueur du livre ne peut pas dépasser 100 , nous devons donc calculer combien de livres il y a au total dans un objet avant d'envoyer les données. Alors, que faisons-nous toujours ? Nous pourrions faire ceci :

function countProperties (obj) {
    var count = 0;
    for (var property in obj) {
        if (Object.prototype.hasOwnProperty.call(obj, property)) {
            count++;
        }
    }
    return count;
}
var bookCount = countProperties(bookAuthors);
// Outputs: 4
console.log(bookCount);

C'est possible, heureusement Javascript fournit une méthode modifiée pour calculer la longueur d'un objet :

var bookAuthors = {
    "Farmer Giles of Ham": "J.R.R. Tolkien",
    "Out of the Silent Planet": "C.S. Lewis",
    "The Place of the Lion": "Charles Williams",
    "Poetic Diction": "Owen Barfield"
};
var arr = Object.keys(bookAuthors);
//Outputs: Array [ "Farmer Giles of Ham", "Out of the Silent Planet", "The Place of the Lion", "Poetic Diction" ]
console.log(arr);
//Outputs: 4
console.log(arr.length);

Utilisons le Méthode keys sur le tableau :

var arr = ["zuojj", "benjamin", "www.zuojj.com"];
//Outputs: ["0", "1", "2"] 
console.log(Object.keys(arr));
//Outputs: 3
console.log(arr.length);

La méthode Object.keys() renverra une liste de toutes les propriétés auto-énumérables de l'objet donnéUn tableau composé de noms d'attributs. L'ordre des noms d'attributs dans le tableau est cohérent avec l'ordre renvoyé lors de l'utilisation d'une boucle for-in pour parcourir l'objet (la principale différence entre les deux est que for-in traversera également un objet à partir de son prototype. chain Propriétés énumérables héritées de sur ).

Récupérer l'instance de longueur d'un objet en JavaScript :

/**
 *  jQuery 扩展方法
 *
 *      $.Object.count( p )
 *          获取一个对象的长度,需要指定上下文,通过 call/apply 调用
 *          示例: $.Object.count.call( obj, true );
 *          @param  {p}             是否跳过 null / undefined / 空值
 *
 */
$.extend({
    //  获取对象的长度,需要指定上下文 this
    Object:     {
        count: function( p ) {
            p = p || false;
         
            return $.map( this, function(o) {
                if( !p ) return o;
                 
                return true;
            } ).length;
        }
    }
});
 
 
//  示例
//  ---------------------------------------------------------------------------
var obj = {
    a:      null,
    b:      undefined,
    c:      1,
    d:      2,
    e:      'test'
};
 
//  不过滤空值
console.log( $.Object.count.call( obj ) );
 
//  过滤空值
console.log( $.Object.count.call( obj, true ) );

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn