JavaScript で配列の最後の要素を取得するもう一つの方法

array[array.length - 1] だと長いとか array.pop() だと元の配列が破壊されるとかありますが、もう一つ良さそうな方法がありました。

1. array.slice(-1)[0]

const array = [1, 2, 3, 4, 5];

const last = array.slice(-1)[0]; // ★これ

console.log({array, last}); // array: [1, 2, 3, 4, 5], last: 5

splice() ではなく slice() です。

関数を呼ぶので速度は遅いと思いますけど、コードはすごく綺麗だと思います。

slice() は第一引数をマイナスにすると後ろからその要素数だけ取得するということなので、意味的にも間違っていないと思います。

2. 配列いろいろ

空配列などの場合にどう動作するか確認。

// 普通の配列
const array1 = [1, 2, 3, 4, 5];
array1[array1.length - 1]; // 5
array1.slice(-1)[0]; // 5
array1.pop(); // 5

// 文字列
const array2 = '12345';
array2[array2.length - 1]; // '5'
array2.slice(-1)[0]; // '5'
array2.pop(); // (TypeError)

// 空配列
const array3 = [];
array3[array3.length - 1]; // undefined
array3.slice(-1)[0]; // undefined
array3.pop(); // undefined

// null, undefined
const array4 = null;
array4[array4.length - 1]; // (TypeError)
array4.slice(-1)[0]; // (TypeError)
array4.pop(); // (TypeError)

array[array.length - 1] が使える場面なら array.slice(-1)[0] を使っても大丈夫そうです。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.