[1, 2].at(-1) // 2
という風に簡単に取得できます
これが無い頃は不便でした
items[items.length - 1]
と items を 2 回参照するので一旦変数に入れる必要があります
ひとつの式の中で書きたいときに扱いづらいです
なので関数を作るのですが 関数だと配列を取得する式全体を囲む必要があるので書きづらいです
なので Array.prototype を拡張して last みたいなメソッドを追加していました
しかしこれでも 最初の取得の [0] とは非対称感があっていまいちです
わかりやすさ的には first メソッドも作ればいいのかもですが コードが長くなります
特に Python も書いていた頃だったので
[1, 2][0] # 1
[1, 2][-1] # 2
のスッキリとした書き方に憧れます
実際に使うのは「最後」のみで 後ろから N 番目なんてまずないので -1 だけ対応すればいいかとこんなことをしてみたりしました
Object.defineProperty(Array.prototype, "-1", { get: function () { return this[this.length - 1] } })
;[1, 2][-1] // 2
-2 もいけそうなのに動かないし 色々問題はあって実用はためらわれるものの結構好きな方法です
ためらった結果使わず prototype を拡張する last もなんかなぁ ということで結局はこんな形でした
[1, 2].slice(-1)[0]
でもこれをみては [-1] って書けるようにしたいなぁと
at が使えるようになっても 最初は [0] なのに最後は .at(-1) になる非対称感のイマイチさを感じてますし かといって 最初や 2 番目の取得でわざわざ at を使おうとは思いません
最後を取得したいってことがあると [-1] で取得できるようにしたいなーと思っては諦めてる状況です