Date: 2021-08-04 17:52:14, Hit: 264

Javascript怎么得到数组长度(也就是数组的元素个数)? Javascript怎么获取对象的成员个数? 你肯定想到了array.length!? 那么我们来测试一下下面这个例子.

var a = [];
a[50] = 50;
alert(a.length);

请问数组a有多少个元素, 或者换一句话说, 数组a的长度为多少?你会告诉我长度为1, 但浏览器会告诉你a.length为51. 有点意思吧? 那我们再看一个例子.

var a = [];
a['age'] = '18';
a['sex'] = 'Male';
a['site'] = 'https://www.uucc.net';
alert(a.length);

请问数组a有多少个元素, 或者换一句话说, 数组a的长度为多少? 我们都知道现在数组a的元素个数为3个,但浏览器会告诉你a.length为 0 !!

js怎么获取对象的成员个数? 用length属性吗?

var a = {'age':30,'sex':'male'};
alert(a.length);

以上代码得到结果为undefined!

综上所述,length不可靠,要想得到准确的数组元素个数或者对象的成员个数,我们需要自己动手写一个函数. 如果传入数组则计算数组长度,如果传入对象则计算对象成员数,如果传入字符串则计算字符串的字数.其他类型返回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'] = 'https://www.uucc.net';
alert(count(a));

得到结果为 3

var a = {'age':30,'sex':'male'};
alert(count(a));

得到结果为 2

Edit Delete
License by Moony