Javascript怎么获取对象的成员个数?
你肯定想到了array.length!? 那么我们来测试一下下面这个例子.
<script type="text/javascript"> var a = []; a[50] = 50; alert(a.length); </script>
请问数组a有多少个元素, 或者换一句话说, 数组a的长度为多少?
你会告诉我长度为1, 但浏览器会告诉你a.length为51. 有点意思吧?
那我们再看一个例子.
<script type="text/javascript"> var a = []; a['age'] = '18'; a['sex'] = 'Male'; a['site'] = 'http://mall.alipay168.cn'; alert(a.length); </script>
请问数组a有多少个元素, 或者换一句话说, 数组a的长度为多少?
我们都知道现在数组a的元素个数为3个,但浏览器会告诉你a.length为0 !!
js怎么获取对象的成员个数? 用length属性吗?
<script type="text/javascript"> var a = {'age':30,'sex':'male'}; alert(a.length); </script>
以上代码得到结果为undefined!
综上所述,length不可靠,要想准确获取js数组元素个数或者对象的成员个数,我们需要自己动手写一个函数.
如果传入数组则计算数组长度,如果传入对象则计算对象成员数,如果传入字符串则计算字符串的字数.其他类型返回false
<script type="text/javascript"> 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; } </script>
现在在测试一下刚才的例子?
<script type="text/javascript"> var a = []; a[50] = 50; alert(count(a)); </script>
得到结果为2
<script type="text/javascript"> var a = []; a['age'] = '18'; a['sex'] = 'Male'; a['site'] = 'http://mall.alipay168.cn'; alert(count(a)); </script>
得到结果为3.
<script type="text/javascript"> var a = {'age':30,'sex':'male'}; alert(count(a)); </script>
得到结果为2