js获取数组,对象的真实长度

js获取数组,对象的真实长度arr.length获取的是真实长度吗:vararr=newArray(10)console(arr.length)//101.以上代码获得的数组长度是10.其实数组实际不为undefined的长度是0啊。vara=[];a['age']='18

大家好,欢迎来到IT知识分享网。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

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/32386.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信