配列の最後の要素はどうやって読み取りますか?今回は、そんな些細な話を取り上げます。
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 のみなさんは知ってました?
今回は以上で終わりです。最後まで読んでくださりありがとうございました。それでは次回の記事までごきげんよう。