在 TypeScript 中获取数组的最后一个元素
Get the Last element of an Array in TypeScript
使用该Array.at()
方法获取 TypeScript 中数组的最后一个元素,例如const last = arr.at(-1)
. 当传递负索引时,该at()
方法通过从数组末尾倒数返回一个元素。
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
变量键入为string
或undefined
。
这是准确的,因为如果数组为空,则返回值为
undefined
.
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]
。计算结果为数组中最后一个元素的索引。
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());
1
请注意,该last
变量的类型为string
,这可能不是您想要的,因为如果数组为空怎么办。
const arr: string[] = []; // 👇️ const last: string const last = arr[arr.length - 1]; console.log(last); // 👉️ undefined
即使数组为空,最后一个变量的类型也string
与 TypeScript 中的一样。
这可能不是您想要的,因为如果您访问一个属性或对一个undefined
值调用一个方法,您会得到一个错误。
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());
您可以使用类型保护来解决这个问题。
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
。