为什么这个对象不是数组

时间:2014-02-20 11:56:04

标签: javascript arrays

我不是Javascript人,但继承了这些乐趣。到目前为止一切都很好。

我的javascript对象,在firebug中,看起来像这样

enter image description here

这表明数组sss在数组中有4个项目(0,1,2和3)。

当我展开其中一个元素时,复杂性来了,我看到了

enter image description here

从我自己的测试中,这些是not数组。它们只被视为对象(或者看起来如此)。

在每个DataItem中,有一个对象,您可以将其命名为lzabel。每个DataItem都有此值。我需要读取for循环中的值。

所以,我希望使用

for (var i = 0; i < sss[0];i++)
{
    var z = sss[0][i]; //This is never executed
}   

但不是!没有错误,但循环的内容永远不会执行(好像sss [0]没有项目)。

我如何像这样循环?

for (var i = 0; i < sss[0];i++)
{
    var z = sss[0][i]["lzabel"];
}   

修改

我添加了以下代码

var t1 = sss.length;
var t2 = sss[0].length;

Firebug报告t1 = 4,t2未定义。

3 个答案:

答案 0 :(得分:1)

要获得伊莎贝尔......

var sssData = sss[0];   // FYI: sss[0].length won't work because it's an object not an array

for (x in sssData) {
    var dataItem = sssData[x];
    console.log( dataItem.Izabel );    // one way to get Izabel property value
    console.log( dataItem["Izabel"] )  // two ways to get Izabel property value
}

答案 1 :(得分:0)

你应该能够像这样循环:

for (i in sss[0]) {
    var z = sss[0][i];
}

答案 2 :(得分:0)

这样的东西?

for(i=0;i<sss.length;i++){
 for(j=1;j<parseInt(Object.keys(sss[i]).length)+1;j++){
     console.log(sss[i]["DataItem"+j].Izabel);
  }
 }