使用 Javascript 检查多维数组的长度 [重复]

Posted

技术标签:

【中文标题】使用 Javascript 检查多维数组的长度 [重复]【英文标题】:Check Length of Multidimensional Arrays with Javascript [duplicate] 【发布时间】:2011-11-03 20:16:51 【问题描述】:

可能重复:Length of javascript Associative Array

我想检查一个多维数组的长度,但我得到“未定义”作为返回值。我假设我的代码有问题,但我看不出有什么奇怪的地方。

alert(patientsData.length); //undefined
alert(patientsData["XXXXX"].length); //undefined
alert(patientsData["XXXXX"]['firstName']); //a name

fruits = ["Banana", "Orange", "Apple", "Mango"];
alert(fruits.length); //4

想法?这可能与范围有关吗?数组在函数外部声明和设置。这可能与 JSON 有关吗?我从 eval() 语句创建了数组。为什么虚拟数组可以正常工作?

【问题讨论】:

看看patientsData是什么样的会很有帮助。 如果你真的想得到一个数组(而不是一个对象)的维度,那么请看这里:***.com/a/13832026/975097 【参考方案1】:

您似乎没有使用嵌套数组,而是使用嵌套在对象中的对象,因为您通过成员的名称(而不是索引)访问成员。

【讨论】:

【参考方案2】:

那些不是数组。它们是对象,或者至少它们被视为对象。即使它们是 Array 实例,换句话说,“长度”也只跟踪最大的数字索引属性。

JavaScript 并没有真正的“关联数组”类型。

您可以使用以下方式计算对象实例中的属性数量:

function numProps(obj) 
  var c = 0;
  for (var key in obj) 
    if (obj.hasOwnProperty(key)) ++c;
  
  return c;

当你有继承链等时,事情会变得有些混乱,你必须根据你自己的架构来确定你希望它的语义是什么。

【讨论】:

【参考方案3】:

.length 仅适用于数组。它不适用于关联数组/对象。

patientsData["XXXXX"] 不是数组。这是一个对象。这是您的问题的一个简单示例:

var data = firstName: 'a name';
alert(data.length); //undefined

【讨论】:

以上是关于使用 Javascript 检查多维数组的长度 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如果javascript中不存在值,如何推送到多维数组

JavaScript--数组

如何在C#中获取多维数组的行/列的长度?

Java中如何获取多维数组的长度

Java中的多维数组长度

创建具有未指定可变行长度的多维数组(Java)