Array.prototype
、各种 TypedArray 原型和 String.prototype
上的新 at
方法使访问集合末尾附近的元素变得更容易、更简洁。
从集合末尾访问第 N 个元素是一种常见的操作。但是,通常的做法很冗长,例如 my_array[my_array.length - N]
,或者可能性能不佳,例如 my_array.slice(-N)[0]
。新的 at
方法通过将负索引解释为“从末尾开始”来使此操作更符合人体工程学。前面的示例可以表示为 my_array.at(-N)
。
为了统一性,也支持正索引,并且等效于普通属性访问。
这个新方法足够小,以至于它的完整语义可以通过下面的兼容 polyfill 实现来理解
function at(n) {
// Convert the argument to an integer
n = Math.trunc(n) || 0;
// Allow negative indexing from the end
if (n < 0) n += this.length;
// Out-of-bounds access returns undefined
if (n < 0 || n >= this.length) return undefined;
// Otherwise, this is just normal property access
return this[n];
}
关于字符串的一句话 #
由于 at
最终执行普通索引,因此在字符串值上调用 at
将返回代码单元,就像普通索引一样。与字符串上的普通索引一样,代码单元可能不是您想要的 Unicode 字符串!请考虑是否 String.prototype.codePointAt()
更适合您的用例。
at
方法支持 #
- Chrome: 从版本 92 开始支持
- Firefox: 从版本 90 开始支持
- Safari: 不支持
- Node.js: 不支持
- Babel: 支持