我创建了一个数组,当我尝试获取数组的长度时,它可以正常工作。
var map = [
[3, 0, 0, 2],
[7, 6, 6, 8],
[7, 6, 6, 8],
[5, 1, 1, 4]
];
var i = map.length;
i
输出4
。
当我尝试使用i
变量来使用var j = map[i].length;
获取列时,控制台返回“map[i]
未定义”。为什么这不起作用,但用实际数字替换i
有效?
这是example jsfiddle,只是取消注释第11行。
答案 0 :(得分:2)
因为表索引是zero-based。表长度为4,但索引为0,1,2和3.当您尝试访问索引4时,您将收到错误。
答案 1 :(得分:2)
i
等于4。 JS数组索引从0开始,因此数组中的最后一个元素是map[3]
,这意味着map[4]
您需要执行map[i-1]
- 此代码应该有效:
var j = map[i-1].length;
这是在你的jsfiddle中工作:https://jsfiddle.net/zk7f8Ls2/2/
答案 2 :(得分:0)
这是因为i
是4,并且如果你想看到数组的最后一项只添加-1 0
map[i-1]
开头