我有一个多维数组,没问题。我如何询问其中一个数组,以确定它是否真的包含任何数据?我正在使用VS 2008,我在调试器中看到的是,让我们调用元素x,是x {...}。但是,如果我尝试使用x.length,我会得到消息'undefined' - 那么如何确定数组中是否有任何内容?
type(x)返回一个对象。这是构造函数代码:
function initArray() {
var length = initArray.arguments.length for (var i = 0; i < length; i++)
{ this[i+1] = initArray.arguments[i]; } }
所以它应该返回一个.length值,它不是!
在多级数组中,它是第三级,所以x = pub [1] [8]应该是目标数组,但正如我所说的,如果我然后去x.length,或x []。我得到的长度未定义...
感谢。
答案 0 :(得分:2)
你确定它是一个数组而不是一个对象吗?数组使用[],对象使用{}。
数组的长度在定义时应该为零。
您可以查看typeof(x)
以查看它是否为undefined
。
这是我们在没有看到您的代码的情况下在黑暗中拍摄的情况。
答案 1 :(得分:1)
看起来你的对象x根本就不是一个数组。
如果是,则长度为零或正整数。
听起来你可能有一个对象并且无意中添加了expando属性。
试试这个:
for(var prop in x) {
var p = prop; // set a breakpoint on this line and check the value of prop
}
答案 2 :(得分:0)
首先检查对象是否为数组:
function isArray(obj) {
return obj.constructor == Array;
}
答案 3 :(得分:0)
如果它是一个像“x = new Array();”那样创建的数组或“x = [];”,那么它应该有一个.length属性。如果它没有.length属性,那么你可能正在处理一个空引用(没有对象),或者你没有处理数组。
答案 4 :(得分:0)
您可以使用布尔运算来检查它。
var arrayHasValues = false;
if (x.length) { // <-- Will be 'true' if 'length' is not null or undefined
if (x.length > 0) {
arrayHasValues = true;
}
}
if (arrayHasValues) {
// Do Something with Array
}
答案 5 :(得分:0)
JavaScript中缺少长度属性的唯一向量数据类型是Object
,因此您可能正在处理对象而不是数组。