js获取数组长度,对象成员个数字、符串字数

Javascript怎么得到数组长度(也就是数组的元素个数)?
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://www.qSyz.net';

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://www.qSyz.net';

alert(count(a));

</script>

得到结果为3.

<script type="text/javascript">
var a = {'age':30,'sex':'male'};

alert(count(a));

</script>

得到结果为2

posted @   一颗吃不完的糖  阅读(6202)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结
点击右上角即可分享
微信分享提示