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