用Javascript检查多维数组的长度

可能重复:
Javascript关联数组的长度

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

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()语句创建了该数组。 为什么哑数组工作得很好?


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

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

你可以用下面的东西来计算对象实例中的属性数量:

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

当你有继承链等时,事情会变得有些混乱,你必须根据自己的体系结构来确定你想要的语义。


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

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

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

看起来你并没有使用嵌套数组,而是使用嵌套在对象中的对象,因为你通过它们的名字(而不是索引)访问成员。

链接地址: http://www.djcxy.com/p/27257.html

上一篇: Check Length of Multidimensional Arrays with Javascript

下一篇: Count Key/Values in JSON