zoukankan      html  css  js  c++  java
  • js获取数组,对象的真实长度

    arr.length获取的是真实长度吗:

    var arr=new Array(10)
    console(arr.length) // 10

    1. 以上代码获得的数组长度是10.其实数组实际不为undefined的长度是0啊。

    var a = [];
    a['age'] = '18';
    a['sex'] = 'Male';
    console.log(a.length);   // 0

    2. 获得的数组长度是0. 其实数组实际不为undefined的长度是2啊。

    再来看看对象长度

    var a = {'age':30,'sex':'male'};
    console.log(a.length); //undefined

    所以长度要怎么获取呢?

    es6新方法一招搞定: Object.keys(obj).length,毕竟数组也是特殊的对象嘛

            var arr = new Array(10)
            console.log(Object.keys(arr).length) // 0
    
            var a = [];
            a['age'] = '18';
            a['sex'] = 'Male';
            console.log(Object.keys(a).length); //2
    
            var b = {
                'age': 30,
                'sex': 'male'
            };
            console.log(Object.keys(b).length); //2

    也可以通过数组API for in等

            function getObjLength(obj) {
                if (typeof obj == "string") {
                    return obj.length;
                }
                var j = 0;
                for (var i in obj) {
                    j++;
                }
                return j;
            }
            var arr = new Array(10)
            console.log(getObjLength(arr)) // 0
    
            var a = [];
            a['age'] = '18';
            a['sex'] = 'Male';
            console.log(getObjLength(a)); //2
    
            var b = {
                'age': 30,
                'sex': 'male'
            };
            console.log(getObjLength(b)); //2

    getObjLength(null)  //0 因为typeof null 也是object

     扩展:Object.getOwnPropertyNames

    var arr = ["a", "b", "c"];
    console.log(Object.getOwnPropertyNames(arr))  // ["0", "1", "2", "length"]
    Object.getOwnPropertyNames(arr).length  //4

     再扩展定义二维数组

            var images = []; //先声明一维bai
            for (var i = 0; i < 2; i++) { //一维长度为2
                images[i] = new Array(); //在声明二维
                for (var j = 0; j < 2; j++) { //二维长度为2
                    images[i][j] = i.toString() + j;
                }
            }

    获取二维数组长度,不管值是不是undefind,则

    images.length

    images[0].length

  • 相关阅读:
    【转】NHibernate主键类型介绍
    【转】NHibernate 各种数据库配置
    NHibernate常见错误
    NHibernate 设置主键不自增长
    Oracle 同名字段的该行数据按照创建时间最新的隐藏其他
    不用第三个变量就能交换两个变量值的五个方法
    Java IO 要点总结
    Java API 各个包的内容解释
    Ways to 优化JAVA程序设计和编码,提高JAVA性能
    Java菜鸟入坑学习要点
  • 原文地址:https://www.cnblogs.com/sunmarvell/p/14466232.html
Copyright © 2011-2022 走看看