【JavaScript】at() で配列の最後の要素の読み取る

配列の最後の要素はどうやって読み取りますか?今回は、そんな些細な話を取り上げます。

pop() メソッド

配列の最後の要素を抜き出すと言ったら、最初に思いつくのは pop() メソッドでしょうか。

const list = ['a', 'b', 'c', 'd', 'e'];
const last_item = list.pop(); // "e"

ところが、pop() メソッドは元の配列の最後の要素を削除してしまいます。これが困ることもありますよね。

Array のインデックス番号指定

では、次のコードはいかがでしょう。

const list = ['a', 'b', 'c', 'd', 'e'];
const last_item = list[list.length - 1]; // "e"

これなら元の配列に変更を加えることなく、最後の要素を読み取ることができます。しかし、他のプログラミング言語の経験がある人なら、この書き方はもどかしいですよね。

他のプログラミング言語ならどうしている?

たとえば Python3 ならこのように書けます。

list = ["a", "b", "c", "d", "e"]
last_item = list[-1] # "e"

大昔から現役の Perl ですら、このように書けます。

my @items = ('a', 'b', 'c', 'd', 'e');
my $last_item = $items[-1]; # "e"

しかし、JavaScript で Array オブジェクトのインデックス番号に -1 を指定すると undefined が返ってしまいます。

const list = ['a', 'b', 'c', 'd', 'e'];
const last_item = list[-1]; // undefined

そこで at() メソッドの出番

ところが、JavaScript でもインデックス番号に -1 を指定することで配列の最後の用を読み取る方法があるんです。それは Array オブジェクトの at() メソッドです。

const list = ['a', 'b', 'c', 'd', 'e'];
const last_item = list.at(-1); // "e"

メソッド名も短いことですし、とても簡潔なコードになります。

もちろん、インデックス番号には -2 や -3 も指定できます。負の整数を指定した場合は、配列の後ろから数えます。-2 を指定すると “d” を、-3 を指定すると “c” を返します。-5 を指定したら “a” を返しますが、-6 を指定すると undefined を返します。

まとめ

正直に申し上げると、筆者は長年 JavaScript を使い倒してきたにもかかわらず、お恥ずかしながら最近まで at() メソッドの存在を知りませんでした。もっぱら、このカッコ悪い list[list.length - 1] を使ってました。JSer のみなさんは知ってました?

今回は以上で終わりです。最後まで読んでくださりありがとうございました。それでは次回の記事までごきげんよう。

Share