js中需要数组索引和未定义的帮助

时间:2018-01-31 16:02:10

标签: javascript arrays json

我有一个数组,我从我的SQL数据库中的JSON字段填充。 这是一个非常复杂的结构。

  

ID1:         0:           ID2:              30:                0:                  0:val1                  1:val2                1:                  0:val1                  1:val2              34:                0:                  0:val1                  1:val2                1:                  0:val1                  1:val2                2:                  0:val1                  1:val2                3:                  0:val1                  1:val2        2:          ...

我定义的问题是我首先得到未定义的,而且我似乎无法访问第一列。 我从中生成的数组没有文本(或者至少这是我的意图)。

代码是这样的:

ar = [];

...长层次结构,我分解了json输入 ......最后还是:

// Create object
if(typeof ar[id1] == 'undefined'){ //id1 is the first identitier
    ar[id1] = [];
}
if(typeof ar[id1][id2] == 'undefined'){
    ar[id1][id2] = [];
}
ar[id1][id2].push([val1, val2]);

当我打印出来时,我得到:
    (3)[Array(46),undefined×1,Array(49)]
    0:数组(46)
      30:阵列(10)
        0:数组(2)
           0:“val1”
           1:“val2”
        1:数组(2)
           0:“val1”
           1:“val2”
      34:阵列(22)
        0:数组(2)
        1:数组(2)
        2:数组(2)
        3:数组(2)
    2:数组(49)......

长度不正确,未定义。 此外,我无法访问我的数组中的id1值。 我哪里出错了?

我的代码:

for (index in ar) {
    console.log("Id1wwe: ", ar[index]);
    console.log("Id1www: ", ar[index].length);
    console.log("Id1wwa: ", ar[0].length);
    console.log("Id1wwb: ", ar.length);
}

console.log("Length: ", ar.length);
for(let i = 0; i < ar.length; i++){
    let tmpId1 = ar[i];
    console.log("Id1: ", ar[i]);
}

它无效。 任何提示?

/弗雷德里克。

1 个答案:

答案 0 :(得分:0)

问题在于您使用的是数据错误的结构:对{}变量考虑[]而不是ar,那么您将能够

  • 可以按索引
  • 访问嵌套数组
  • 使用Object.keys(ar).length
  • 具有正确的结构长度