如何在JavaScript中记录数组的索引?

3
这个问题更多地是为什么这段代码可以这样工作,而不是怎样让这段代码工作。
我正在学习JavaScript的codecademy教程,并且遇到了一节课,我可以在自己的代码中概念上利用这个课程,因为我能看到这个特定代码的模式 - 但是这段代码为什么能这样工作却说不清。下面是一个例子:
let myArray = ['First','Second','Third'];
var last = myArray[myArray.length - 1];
console.log(last);

当运行以上代码时,控制台会显示“Third”。我知道JavaScript语言是一种“零索引”语言,我知道在这个数组中,“第一个”位置从左到右计数为“0”,但我的问题是,即使我们从“0”开始并计算每个项目;0然后1然后2;控制台不应该记录“Second”而不是“Third”吗?还是JavaScript中的“length”方法忽略了“0”基于索引系统,实际上从“1”开始计数;在这种情况下,答案应该仍然是“Second”,而不是“Third”...无论如何,我的大脑都在计算“Second”,而不是“Third”,尽管控制台输出是“third”... 有人能解释一下我错过了什么吗?

知道 myArray.length - 1 == 2 ... 现在你认为 ... 长度是长度,即3 ... 而不是2,因为有3个元素 ... 索引是从零开始的,长度是 ... 好吧,长度就是长度。 - Jaromanda X
索引:0,1,2仍然具有长度为3 - James Maa
3个回答

4
尝试这段代码,它会有所帮助。这对我来说也很棘手。只需使用变量并同时计算即可。
let myArray = ['First','Second','Third'];
var last = myArray[myArray.length - 1];
console.log(last);

首先,我们需要注意myArray.length的值为3,因为它包含了3个项。

其次,我们可以重新分析这个问题,将myArray.length替换为3:

myArray[3 - 1]

现在,你可以看到它只是计算3-1,结果是2,所以代码与以下代码相同:

myArray[2] // which returns the item at position 2 (starting from 0), [0, 1, 2]

好的,我明白了。没错,那很有道理。我想我的问题在于我一开始就试图从概念上找到答案,而没有先将其分为两个单独的步骤(就像你的例子一样)。现在我清楚地看到了。谢谢你。 - Ghoyos
1
有时候查看类似这样的对象属性也很棘手。你可能会看到 object.name,或者你可能会看到 object['name'],而棘手的地方在于有时你会在其中看到变量,比如 object[something1 + something2],它是“连接”(即:将两个东西粘在一起)的,所以实际上是 object.something1something2。这些通常显示为 object['something' + i](其中 i 是一个递增的迭代器编号)。 - agm1984
1
请注意,您还可以使用 myArray.indexOf('Third') 来查找您想要的元素的位置。 - agm1984

2

array.length 是数组中的项数,这个数组有3个元素。但是数组索引从0开始,最后一个索引是2而不是3。因此,如果你想使用array.length获取数组元素,如果你想要获取最后一个元素,你需要将长度减1;如果你想获取前一个元素,你需要将长度减2,以此类推。


2

Array.length返回数组中项目数量,与索引无关。

然而,由于在实践中数组是从0开始索引的,因此Length - 1将始终是数组中的最后一个索引。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接