为什么我不能使用这个数组的长度数?

时间:2016-02-27 20:59:38

标签: javascript arrays

我创建了一个数组,当我尝试获取数组的长度时,它可以正常工作。

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行。

3 个答案:

答案 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]开头