es6 的 at() 方法支持正负索引取数组元素,负数从 -1 开始倒数取值,越界返回 undefined,比传统写法更简洁安全,兼容现代浏览器和 node.js v16.6+,typescript 4.5+ 原生支持。

ES6 的 at() 方法支持用负数索引从数组末尾倒数取元素,比传统的 arr[arr.length - n] 更简洁直观。
用负数索引直接倒数取值
at() 接受正数(从头开始)和负数(从尾开始)索引。负数索引从 -1 开始,对应最后一个元素,-2 是倒数第二个,以此类推。
-
[1, 2, 3, 4].at(-1)→ 4(最后一个) -
[1, 2, 3, 4].at(-2)→ 3(倒数第二个) -
[1, 2, 3, 4].at(-4)→ 1(第一个) -
[1, 2, 3, 4].at(-5)→ undefined(越界,安全返回 undefined)
对比传统写法,更安全也更可读
以前常用 arr[arr.length + n] 或 arr.slice(n)[0] 实现倒取,但容易出错或冗长:
- 手动计算长度易漏减 1:
arr[arr.length - 1]正确,但arr[arr.length - 2]容易误写成-3 -
slice(-1)[0]多余创建新数组,性能略低 -
at(-1)语义清晰、代码短、不修改原数组、越界不报错
兼容性注意点
at() 是 ES2022(ES13)正式特性,现代浏览器基本支持,但 IE 完全不支持,Node.js 从 v16.6+ 开始支持。
- 如需兼容旧环境,可用 polyfill(如 core-js)或回退到
arr[arr.length + n] || undefined - TypeScript 4.5+ 默认识别
at()类型,无需额外声明
实际小技巧:链式取嵌套结构的末项
配合可选链操作符 ?.,能安全处理可能为空的数组:
-
users?.at(-1)?.name→ 取用户列表最后一个对象的 name,全程不报错 -
response.data?.items?.at(-1)→ 常用于 API 返回数组末条记录
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











