jQuery如何获取和计算对象的长度?
程序员文章站
2022-04-12 15:38:09
...
在我们日常开发中,对象的使用频率很高,我们计算数组的长度是非常方便的,但是如何计算对象的长度呢?假如我们有一个图书馆的项目,项目中有一组图书和作者,像下面这样:
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" };
我们分析现在的需求,我们给一个API发送数据,但是书的长度不能超过100,因此我们需要在发送数据之前计算在一个对象中总共有多少本书。那么我们总怎么做呢?我们可能会这样做:
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);
这是可以实现的,幸运的是Javascript提供了一个更改的方法来计算对象的长度:
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);
下面我们来对数组使用keys方法:
var arr = ["zuojj", "benjamin", "www.zuojj.com"]; //Outputs: ["0", "1", "2"] console.log(Object.keys(arr)); //Outputs: 3 console.log(arr.length);
Object.keys() 方法会返回一个由给定对象的所有可枚举自身属性的属性名组成的数组,数组中属性名的排列顺序和使用for-in循环遍历该对象时返回的顺序一致(两者的主要区别是 for-in 还会遍历出一个对象从其原型链上继承到的可枚举属性)。
在 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 ) );
以上就是jQuery如何获取和计算对象的长度?的详细内容,更多请关注其它相关文章!
推荐阅读
-
js和jquery如何获取图片真实的宽度和高度
-
使用 jQuery 基本选择器获取页面元素,然后利用 jQuery 对象的 css() 方法动态设置 <span> 和 <a> 标签的样式
-
关于获取jquery对象的长度
-
灵魂拷问:Java如何获取数组和字符串的长度?length还是length()?
-
js和jquery如何获取图片真实的宽度和高度_javascript技巧
-
JS怎么计算获取对象的长度
-
如何用jQuery获取父级和父级以上的元素
-
js中如何复制一个对象并获取其所有属性和属性对应的值_javascript技巧
-
Javascript和jQuery获取对象的方法
-
jQuery如何获取和计算对象的长度?