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个元素返回数值,一个元素始终返回未定义的值。数组定义可能有问题,请指出错误。
答案 0 :(得分:1)
是。有一个拼写错误,它只为delta.south
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;