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,
js 二维数组
'sex': 'male'
};
console.log(getObjLength(b)); //2
getObjLength(null)  //0 因为typeof null 也是object
扩展:OwnPropertyNames
var arr = ["a", "b", "c"];
console.OwnPropertyNames(arr))  // ["0", "1", "2", "length"]
再扩展定义⼆维数组
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

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。