
相对索引 `at` 方法
在 Array.prototype.at、各种类数组和 String.prototype.at 上的新方法 at 使得访问一个靠近集合末端的元素变得更加简单和简洁。
从一个集合的末端访问第 N 个元素是一个常见的操作。然而,通常的方法是很冗长的,比如 my_array[my_array.length - N],或者性能不是很好,比如 my_array.slice(-N)[0]。新的 at 方法使这个操作更符合人机工程学原理,它把负数参数解释为“从尾到头”。之前的例子可以表示为 my_array.at(-N)。
为了统一起见,也支持正参数,并且等同于普通的属性访问。
这个新方法足够小,它的完整语义可以通过下面这个符合要求的 polyfill 实现来理解:
function at(n) {
// 把 n 转换为整数
n = Math.trunc(n) || 0;
// 允许从尾部开始索引的负数
if (n < 0) n += this.length;
// 超出索引范围时返回 undefined
if (n < 0 || n >= this.length) return undefined;
// 最后,使用一般的索引属性访问
return this[n];
}关于字符串对象的一句话
由于 at 最终执行的是普通的索引,在字符串值上调用 at 会返回代码单位,就像普通索引一样。就像在字符串上的普通索引一样,代码单位可能不是你想要的 Unicode 字符串!请考虑是否更适合你的使用情况。请考虑 String.prototype.codePointAt() 是否更适合于你的使用情况。
支持 at 方法
方法 at 的环境支持情况:
- Chrome 92+
- Firefox 90+
- Safari 不支持
- Node.js 不支持
- Babel(通过
core-js支持)
本文作者 Shu-yu Guo,转载请注明来源链接:


