Maison > Article > interface Web > Comment jQuery obtient-il et calcule-t-il la longueur d’un objet ?
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!