开发者社区> 问答> 正文

JavaScript关联数组的长度

我有一个js关联数组(或者有些人可能更喜欢将其称为对象),比如说

var quesArr=new Array(); quesArr["q101"]="Your name?"; quesArr["q102"]="Your age?"; quesArr["q103"]="Your school?"; 是否有任何内置函数可以获取此数组的长度,或者jQuery或其他库中的任何解决方案?目前,大多数人都必须知道,quesArr.length的值为0。

请不要建议像这个问题中提到的那样遍历整个数组/对象,因为我拥有的数组/对象非常大。

有什么办法可以继续进行吗? 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-09 14:05:51 1078 0
1 条回答
写回答
取消 提交回答
  • 不,没有内置属性可以告诉您对象具有多少个属性(这就是您要寻找的)。

    我能想到的最接近的是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?" }; 这些可以是单引号或双引号。

    2020-02-09 14:06:03
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
JavaScript面向对象的程序设计 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载