Maison > interface Web > js tutoriel > le corps du texte

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

伊谢尔伦
Libérer: 2017-06-17 13:26:04
original
4154 Les gens l'ont consulté

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"
};
Copier après la connexion

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);
Copier après la connexion

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);
Copier après la connexion

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);
Copier après la connexion

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 ) );
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal