at メソッドによる相対インデックス付け

発行 · ECMAScript を付けてタグ付け

Array.prototype に新しい at メソッド、さまざまな TypedArray プロトタイプ、そして String.prototype が導入され、コレクションの末尾に近い要素へのアクセスがより簡単で簡潔になりました。

コレクションの末尾から N 番目までの要素にアクセスするのは、一般的な操作です。しかしながら、通常は my_array[my_array.length - N] のように冗長だったり、または my_array.slice(-N)[0] のようにパフォーマンスが低下する可能性があります。新しい at メソッドは、負のインデックスを「末尾から数えたもの」と解釈するため、この操作がより人間工学的に改善されます。先の例は、my_array.at(-N) として表現できます。

統一性を保つため、正のインデックスもサポートされており、通常のプロパティアクセスと同じになります。

この新しいメソッドは非常には小さく、以下の互換性のあるポリフィル実装により、その完全な意味を理解できます

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: サポートされていません