使用 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 检查多维数组的长度 [重复]的主要内容,如果未能解决你的问题,请参考以下文章