为啥 array[array.length] 返回未定义? [复制]

Posted

技术标签:

【中文标题】为啥 array[array.length] 返回未定义? [复制]【英文标题】:Why array[array.length] returns undefined? [duplicate]为什么 array[array.length] 返回未定义? [复制] 【发布时间】:2018-10-15 06:57:36 【问题描述】:

我正在尝试访问数组的最后一个值,但不明白为什么这不起作用。

const arr = [2 , 3, 6, 8];
const end = arr[ arr.length ];
console.log(end);

但是当我尝试控制台记录它返回的值时,它返回 4,这是我在以前的代码中寻找的:

console.log(arr.length);

【问题讨论】:

数组是零索引的,所以如果你想要最后一个元素,索引是 0, 1, 2, 3 arr[arr.length -1] 数组索引为零,因此您可能想考虑一下这对 arr.length 意味着什么.. 最后一个元素数组位于索引length -1 【参考方案1】:

数组是从零开始的索引。这意味着数组的第一个元素由 0 的下标索引,最后一个元素将是 length - 1

const arr = [2 , 3, 6, 8];
const end = arr[ arr.length - 1 ];
console.log(end);

【讨论】:

【参考方案2】:

数组是从 0 开始索引的。可以使用arr[arr.length - 1] 访问数组的最后一项。在您的示例中,您尝试访问不存在的索引处的元素。

【讨论】:

【参考方案3】:

Array 索引始终从 0 开始,Array length 等于数组中元素的计数

value   => [2,3,6,8]
indexes => [0,1,2,3]

这就是为什么arr[4] 出现undefined,因为索引 4 处没有值。

const arr = [2 , 3, 6, 8];
const end = arr[ arr.length-1 ];
console.log(end);

【讨论】:

【参考方案4】:

javascript 数组索引从 0 开始计数。所以...

arr[0] 计算结果为 2

arr[1] 计算结果为 3

arr[2] 计算结果为 6

arr[3] 计算结果为 8

arr.length 的计算结果为 4,因为您的数组中有 4 个元素

arr[4] 指的是数组中的第 5 个元素,在您的示例中为 undefined

【讨论】:

以上是关于为啥 array[array.length] 返回未定义? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Array.Length 是一个 int,而不是一个 uint [重复]

array.length-=1 与 array.pop()

返回值为int[] 的快排写法

Java 数组 获取二维数组的行数和列数

给定一个数组,返回除了最大最小值之外数字的和

js中Array数组的属性和方法