1.应用场景

主要用于获取数组长度, 对象成员个数, 字符串数.

2.学习/操作

Q1.Javascript怎么得到数组长度(也就是数组的元素个数)?

Q2.Javascript怎么获取对象的成员个数?

Q1 你肯定想到了array.length!? 那么我们来测试一下下面这个例子.

<script type="text/javascript">

var a = [];

a[50] = 50;

alert(a.length);

</script>

请问数组a有多少个元素, 或者换一句话说, 数组a的长度为多少?

你会告诉我长度为1, 但浏览器会告诉你a.length为51. 有点意思吧?  //其实也好理解, 类比于PHP中的索引数组, 一切根据key的变化而定。

那我们再看一个例子.

<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 !!

备注:undefinednull,与空位是不同的概念~~

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

<script type="text/javascript">

var a = {'age':30,'sex':'male'};

alert(a.length);

</script>

以上代码得到结果为undefined!

综上所述,

length不可靠, 要想准确获取js数组元素个数或者对象的成员个数, 我们需要自己动手写一个函数.

备注:

数组

如果不是通过[key]修改的, 而是直接声明初始化赋值/或者使用push, pop修改, 是可以使用的.

如下:

统一解决办法:

自定义函数, 但是有时候可能大材小用[数据类型确定, 就针对一种写解决方法即可]

如果传入数组则计算数组长度,

如果传入对象则计算对象成员数,

如果传入字符串则计算字符串的字数,

其他类型返回false

备注:

字符串与数组的相似性仅此而已。实际上,无法改变字符串之中的单个字符,

length属性返回字符串的长度,该属性也是无法改变的。 所以可以字符串可以使用length属性来取值

<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;
}

// 方式二:

function countTwo(value){
    var type = typeof value;
    if(type == 'string'){
        return value.length;
    }else if(type == 'object'){
        var type = value instanceof Array;  //或者直接通过value.filter来检测判断亦可, 数组有该方法, 对象没有
        if(type){
            return value.filter(function(ele){
                return !!ele || ele == 0;
            }).length;
        }
        return Object.getOwnPropertyNames(value).length;
    }
    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

补充

如果是数组, 可以使用

var arr = [0, 1, 50];

var count = arr.filter(function(a) {

return !!a; //注意判断条件

}).length;

但是: 因为有个元素为0 , 获取的长度为2, 所以要留心判断条件

后续补充

...

3.问题/补充

TBD

4.参考

https://www.cnblogs.com/sunnywindycloudy/p/7382226.html  //js获取数组长度,对象成员个数、字符串数

后续补充

...

Javascript 获取数组长度, 对象成员个数, 字符串数相关推荐

  1. js/javascript获取数组长度

    利用JS/javaScript来获取数组的长度: 例:var arr=new Array(); arr[0] = "a"; arr[1] = "b"; var ...

  2. c++获取数组长度_灵魂拷问:Java如何获取数组和字符串的长度?length还是length()?...

    限时 1 秒钟给出答案,来来来,听我口令:"Java 如何获取数组和字符串的长度?length 还是 length()?" 在逛 programcreek 的时候,我发现了上面这个 ...

  3. JavaScript获取数组对象里面的键(key)和值(value)

    JavaScript获取数组对象里面的键key和值value对象键值 知识回调 场景复现 三种方法获取数组对象里的键值 1.Object.keys() 2.Object.entries(obj) 3. ...

  4. Js获取 数组或对象 的长度

    Javascript 计算Object的长度 获取数组长度比较简单 Var arr=["as","da"]; arr.length不用加();   在我们日常开 ...

  5. shell判断数组内是否包含某成员,获取数组长度

    ary=(1 2 3) a=2 if [[ "${ary[@]}" =~ "$a" ]] ; then     echo "a in ary" ...

  6. delphi 获取数组长度_C++可变长的数组,老司机手把手教你实现!

    01 实现自定义的可变长数组类型 假设我们要实现一个会自动扩展的数组,要实现什么函数呢?先从下面的main函数给出的实现,看看有什么函数是需要我们实现的. int main(){ MyArray a; ...

  7. php读取数组长度,PHP count():获取数组长度

    PHP count() 函数用来获取数组长度,也即计算数组元素的个数.另外,count() 函数还可以统计对象中的属性个数. count() 语法如下: int count ( mixed $arr ...

  8. sizeof获取数组长度

    昨天开始看<算法导论>这本书,第一个算法就是(直接)插入排序,根据书里给出的伪代码写出了C语言代码,也根据自己的理解重新写了一个.虽然实现了算法的基本要求,但有些细节没有处理好,今天就来完 ...

  9. linux 脚本 数组长度,Shell获取数组长度

    所谓数组长度,就是数组元素的个数. 利用@或*,可以将数组扩展成列表,然后使用#来获取数组元素的个数,格式如下:${#array_name[@]} ${#array_name[*]} 其中 array ...

最新文章

  1. 【Qt】Qt再学习(三):Chart Themes Example(常用图表)
  2. 博弈论题表(好少~~~)
  3. 视图控制器及屏幕旋转
  4. 服务器网站数据用什么方式加以保留?
  5. linux装完windows时间长,重装Windows 10上的Linux子系统
  6. 用 Python+openpose 实现抖音尬舞机
  7. mac下安装mysql-pyhon_mac下安装MySQL-python模块
  8. 乐视云视频PHP接口操作视频上传,编辑,查询以及删除
  9. 03173软件开发工具主观题汇总
  10. arm linux 掉电检测,如何实现单片机掉电检测与数据掉电保存?-嵌入式系统-与非网...
  11. 计算机图形学画简单图形,计算机图形学 基本图形绘制 Koch雪花绘制
  12. Learning Multi-granularity Consecutive User Intent Unit for Session-based Recommendation
  13. 2010年广州市公务员考试行测真题及答案解析
  14. 信息系统集成有以下几个显著特点
  15. python登录qq邮箱爬邮件_python3+selenium实现qq邮箱登陆并发送邮件功能
  16. Java实现Zip压缩包解压
  17. OpenStack+Ceph存储空间回收
  18. 债务大爆发,中国30%家庭不堪一击!
  19. windows启动盘
  20. 静息态功能磁共振及其在精神疾病诊断中的应用

热门文章

  1. elementui plus 图标循环加载
  2. 你知道怎么健康安全的佩戴蓝牙耳机吗?双11五款高音质小清新蓝牙耳机推荐
  3. 区间dp hdu5115 杀狼题目
  4. 23 CoCos Creator-主菜单
  5. 【链塔DApp日报】BDI指数下降14.52%,以太坊 24h交易额下降18.60%
  6. c++11 thread 类内使用方法和跨类使用方法
  7. Go 言 Go 语,一文看懂 Go 语言文件操作
  8. 设计模式:工厂方法模式
  9. 分布式一致性算法Paxos,Zookeeper的ZAB协议,Raft算法
  10. unity协程执行顺序