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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM