通常用length来获取js数组的元素个数,然而在有些情况是不准确的。
1.
<script type="text/javascript"> var a = [];a[50] = 50;alert(a.length); </script>
数组a有1个元素, 但浏览器会告诉你a.length为51. 不一致吧。
2.
<script type="text/javascript">var a = [];a['age'] = '18';a['sex'] = 'Male';a['site'] = 'http://www.qSyz.net';alert(a.length); </script>
数组a有3个元素?,但浏览器会告诉你a.length为0 !
3.
<script type="text/javascript"> var a = {'age':30,'sex':'male'}; alert(a.length); </script>
以上代码得到结果为undefined!
综上所述,length不可靠,要想准确获取js数组元素个数或者对象的成员个数,我们需要自己动手写一个函数.
如果传入数组则计算数组长度,如果传入对象则计算对象成员数,如果传入字符串则计算字符串的字数.其他类型返回false。
定义方法:
function count(o) { var t = typeof o; if (t == 'string') { return o.length; } else if (t == 'object') { var n = 0; for (var i in o) { n++; } return n; } return false; }
使用例子:
现在在测试一下刚才的例子?
var a = [];
a[50] = 50;
alert(count(a));
得到结果为2
var a = [];
a['age'] = '18';
a['sex'] = 'Male';
a['site'] = 'http://www.qSyz.net';
alert(count(a));
得到结果为3.
var a = {'age':30,'sex':'male'};
alert(count(a));
得到结果为2