登录 ×

梨花寨前端技术交流平台!

html,css,js,html5,css3等

js获取数组长度/字符串字数/对象成员数 的方法

2014-07-14 13:18:52 | 浏览量:1586 前端工具

     通常用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



需求及问题提交:

点击图片更换数字

0.5367s