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

How come I can't use the length number from this array?

本文关键字:数字 数组 不能 为什么      更新时间:2023-09-26

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

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有效?

这是一个示例 jsfiddle,只需取消注释第 11 行。

i等于

4,正如你所说。JS数组索引从0开始,所以数组中的最后一个元素是map[3]这意味着map[4]处没有元素

您需要执行map[i-1] - 此代码应该有效:

var j = map[i-1].length;

这是它在你的jsfiddle中工作:https://jsfiddle.net/zk7f8Ls2/2/

因为表索引是从零开始的。表长度为 4,但索引为 0、1、2 和 3。当您尝试访问索引 4 时,将收到错误。

这是因为i是 4,请记住数组以 0 开头,如果您想查看数组的最后一项,只需添加 -1 map[i-1]