javascript关联数组类型的返回数据

时间:2014-12-19 16:58:10

标签: javascript arrays

delta = {
    "north": [-1,  0, -1, -1, -1,  1],
    "south": [ 1,  0,  1  -1,  1,  1],
    "east":  [ 0, -1,  0, -1,  0,  1],
    "west":  [ 0,  1,  0,  1,  0, -1]
 }
traceArray = function() {
    for(var i = 0; i < 6; i++) {
        console.log('array() - n,' + i + ' colDelta = ' + typeof this.delta['north'][i]);
        console.log('array() - s,' + i + ' colDelta = ' + typeof this.delta['south'][i]);
        console.log('array() - e,' + i + ' colDelta = ' + typeof this.delta['east'][i]);
        console.log('array() - w,' + i + ' colDelta = ' + typeof this.delta['west'][i]);
    }
}

我使用带有四个字符串键的关联数组,每个关联的数据组件是一个6元素的数字数组。访问时,23个元素返回数值,一个元素始终返回未定义的值。数组定义可能有问题,请指出错误。

3 个答案:

答案 0 :(得分:1)

是。有一个拼写错误,它只为delta.south

提供了5个元素
 delta = {
    "north": [-1,  0, -1, -1, -1,  1],
    "south": [ 1,  0,  1,  -1,  1,  1],  // there was a comma missing after 2nd 1
    "east":  [ 0, -1,  0, -1,  0,  1],
    "west":  [ 0,  1,  0,  1,  0, -1]
 }

正在发生的事情是因为它没有,正在评估1 - 1 = 0,所以delta.south[2]等于0因此您没有访问第6个元素因此undefined

答案 1 :(得分:1)

"south": [ 1,  0,  1  -1,  1,  1],
                    ^

你错过了一个逗号,所以这个数组中只有5个元素。这就是为什么在尝试阅读第6个元素时获得undefined的原因。

答案 2 :(得分:0)

这是因为错过了一个逗号:

delta = {
    "north": [-1,  0, -1, -1, -1,  1],
    "south": [ 1,  0,  1  -1,  1,  1], // <- check it here
    "east":  [ 0, -1,  0, -1,  0,  1],
    "west":  [ 0,  1,  0,  1,  0, -1]
 }

所以,你在delta.south [2]中获得了有效的js表达式1-1,它是0;