在 TypeScript 中获取数组的最后一个元素

在 TypeScript 中获取数组的最后一个元素

Get the Last element of an Array in TypeScript

使用该Array.at()方法获取 TypeScript 中数组的最后一个元素,例如const last = arr.at(-1). 当传递负索引时,该at()方法通过从数组末尾倒数返回一个元素。

索引.ts
const arr: string[] = ['a', 'b', 'c']; // 👇️ const lastAgain: string | undefined const last = arr.at(-1); console.log(last); // 👉️ "c" if (last !== undefined) { console.log(last.toUpperCase()); // 👉️ "C" } // 👇️ Or use optional chaining console.log(last?.toUpperCase()); // 👉️ "C"

我们使用
Array.at
方法在 TypeScript 中获取数组的最后一个元素。

该方法采用的唯一参数是index要返回的数组元素的 。

当传递负索引时,该方法通过从数组末尾倒数返回一个元素。

at()方法返回数组中与提供的索引匹配的元素,或者undefined如果找不到给定的索引。

请注意,TypeScript 将last变量键入为stringundefined

这是准确的,因为如果数组为空,则返回值为
undefined.

索引.ts
const arr: string[] = []; // 👇️ const lastAgain: string | undefined const last = arr.at(-1); console.log(last); // 👉️ undefined if (last !== undefined) { console.log(last.toUpperCase()); } // 👇️ Or use optional chaining console.log(last?.toUpperCase()); // 👉️ undefined

undefined您可以通过使用简单的
类型保护来绕过可能存在的值

if语句和
可选的链接 (?.)
运算符用作类型保护并排除值是 的可能性
undefined,这使我们能够使用特定于类型的内置方法。

或者,您可以访问最后一个索引处的数组元素。

要在 TypeScript 中获取数组的最后一个元素,请访问索引处的数组
array.length - 1,例如const last = arr[arr.length - 1]计算结果为数组中最后一个元素的索引。

索引.ts
const arr: string[] = ['a', 'b', 'c']; // 👇️ const last: string const last = arr[arr.length - 1]; console.log(last); // 👉️ "c" if (last !== undefined) { console.log(last.toUpperCase()); } console.log(last?.toUpperCase());
索引在 JavaScript 中是从零开始的。这就是为什么我们必须从数组的长度中减去以获得数组中最后一个元素的索引。 1

请注意,该last变量的类型为string,这可能不是您想要的,因为如果数组为空怎么办。

索引.ts
const arr: string[] = []; // 👇️ const last: string const last = arr[arr.length - 1]; console.log(last); // 👉️ undefined

即使数组为空,最后一个变量的类型也string与 TypeScript 中的一样。

这可能不是您想要的,因为如果您访问一个属性或对一个undefined值调用一个方法,您会得到一个错误。

索引.ts
const arr: string[] = []; // 👇️ const last: string const last = arr[arr.length - 1]; console.log(last); // 👉️ undefined // ⛔️ Cannot read properties of undefined (reading 'toUpperCase') console.log(last.toUpperCase());

您可以使用类型保护来解决这个问题。

索引.ts
const arr: string[] = []; // 👇️ const last: string const last = arr[arr.length - 1]; if (last !== undefined) { console.log(last.toUpperCase()); } // 👇️ Or use optional chaining console.log(last?.toUpperCase()); // 👉️ undefined
我们的条件在调用方法之前if明确检查last 变量是否未存储。undefined toUpperCase()

我们可以确定变量在last中存储了一个字符串。if

undefined或者,您可以使用可选的链接 (?.) 运算符,如果引用是or
,它会短路而不是抛出错误
null