我有一个js关联数组(或者有些人可能更喜欢将其称为对象),比如说
var quesArr=new Array(); quesArr["q101"]="Your name?"; quesArr["q102"]="Your age?"; quesArr["q103"]="Your school?"; 是否有任何内置函数可以获取此数组的长度,或者jQuery或其他库中的任何解决方案?目前,大多数人都必须知道,quesArr.length的值为0。
请不要建议像这个问题中提到的那样遍历整个数组/对象,因为我拥有的数组/对象非常大。
有什么办法可以继续进行吗? 问题来源于stack overflow
不,没有内置属性可以告诉您对象具有多少个属性(这就是您要寻找的)。
我能想到的最接近的是ES5和更高版本的功能Object.keys(spec | MDN),您可以像这样使用它:
console.log(Object.keys(quesArr).length); // "3" Object.keys返回对象自己的可枚举属性名称的数组。但是,在内部当然是您不想使用的循环(当然,对于ES5之前的环境,它的polyfill使用一个循环)。
还有另一个ES5 +功能Object.getOwnPropertyNames(spec | MDN),无论对象是否可枚举,它都会返回对象的“自己的”属性名称的数组。
两者都得到了模糊的现代支持。IE9 +,以及至少从2011年开始的Chrome,Firefox和Safari版本。
FWIW,除非您要使用Array对象的功能,否则不要将其设置为数组。代替:
var quesArr = {}; quesArr["q101"] = "Your name?"; quesArr["q102"] = "Your age?"; quesArr["q103"] = "Your school?"; 如果您不希望这些键(无论使用数组还是普通对象),也不必在方括号中将它们作为字符串文字给出:
var quesArr = {}; quesArr.q101 = "Your name?"; quesArr.q102 = "Your age?"; quesArr.q103 = "Your school?"; 但是,如果愿意,可以使用其他表示法。它们完全等效,只是带有点号的键必须是有效的标识符名称(在方括号中,它们可以是任何东西)。
您甚至可以这样做:
var quesArr = { q101: "Your name?", q102: "Your age?", q103: "Your school?" }; 或(如果密钥不是有效的标识符):
var quesArr = { "q101": "Your name?", "q102": "Your age?", "q103": "Your school?" }; 这些可以是单引号或双引号。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。