如何在JavaScript中使用多维数组?

时间:2009-07-02 23:15:40

标签: javascript arrays

我有一个多维数组,没问题。我如何询问其中一个数组,以确定它是否真的包含任何数据?我正在使用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 []。我得到的长度未定义...

感谢。

6 个答案:

答案 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,因此您可能正在处理对象而不是数组。