Có nhiều cách lấy phần tử cuối cùng của mảng trong JavaScript. Dưới đây là các phương pháp từ hiện đại đến cổ điển:
Cách 1: Array.at(-1) - CHUẨN HIỆN ĐẠI (ES2022) - Khuyên dùng nhất
const arr = [30, 40, 50, 60];
const last = arr.at(-1); // 60
console.log(last);
- Hỗ trợ chỉ số âm:
-1= cuối,-2=倒 số 2... - Trả về
undefinednếu mảng rỗng (an toàn). - Rõ ràng, dễ đọc, chuẩn ECMAScript 2022.
Cách 2: slice(-1)[0] - Phổ biến ES5/ES6
const arr = [30, 40, 50, 60];
const last = arr.slice(-1)[0]; // 60
// slice(-1) trả về mảng mới chứa 1 phần tử cuối -> [0] lấy giá trị
console.log(last);
- Hoạt động tốt, nhưng tạo mảng trung gian (chút overhead).
- Trả về
undefinednếu mảng rỗng (an toàn).
Cách 3: arr[arr.length - 1] - Cổ điển, hiệu năng cao nhất
const arr = [30, 40, 50, 60];
const last = arr[arr.length - 1]; // 60
console.log(last);
- Truy cập trực tiếp, không tạo object trung gian, nhanh nhất.
- Rủi ro: Nếu mảng rỗng (
length = 0),arr[-1]trả vềundefined(không lỗi, nhưng logic length-1 = -1 hơi "ma quái").
Cách 4: pop() - NẾU CẦN LẤY VÀ XÓA PHẦN TỬ CUỐI (Mutate)
const arr = [30, 40, 50, 60];
const last = arr.pop(); // 60, arr thành [30, 40, 50]
console.log(last, arr);
- Thay đổi mảng gốc (mutable).
- Chỉ dùng khi muốn "lấy ra và xóa".
So sánh
| Phương pháp | Immutable? | Hỗ trợ index âm? | An toàn mảng rỗng? | Hiệu năng | Khuyên dùng |
|---|---|---|---|---|---|
arr.at(-1) | ✅ | ✅ | ✅ (undefined) | Tốt | CHUẨN HIỆN ĐẠI |
arr.slice(-1)[0] | ✅ | ✅ (qua slice) | ✅ (undefined) | Trung bình (tạo mảng) | Tốt (ES5/ES6) |
arr[arr.length-1] | ✅ | ❌ | ⚠️ (undefined, nhưng logic -1) | Nhanh nhất | Legacy, critical perf |
arr.pop() | ❌ (Mutate) | ❌ | ✅ (undefined) | Nhanh | Chỉ khi CẦN xóa |
Ví dụ hoàn chỉnh (HTML)
<!DOCTYPE html>
<html>
<body>
<script>
var array = [30, 40, 50, 60];
// Cách hiện đại (ES2022) - Khuyên dùng
document.write("at(-1): " + array.at(-1) + "<br>"); // 60
// Cách phổ biến ES5/6
document.write("slice(-1)[0]: " + array.slice(-1)[0] + "<br>"); // 60
// Cách cổ điển
document.write("length-1: " + array[array.length - 1] + "<br>"); // 60
// Mảng rỗng
var empty = [];
document.write("Empty at(-1): " + empty.at(-1) + "<br>"); // undefined
document.write("Empty slice: " + empty.slice(-1)[0] + "<br>"); // undefined
document.write("Empty len-1: " + empty[empty.length - 1] + "<br>"); // undefined
</script>
</body>
</html>
Kết luận: Hãy dùng array.at(-1) (ES2022) - rõ ràng, an toàn, chuẩn. Nếu môi trường cũ chưa hỗ trợ, dùng array.slice(-1)[0] hoặc array[array.length - 1]. Chỉ dùng pop() khi muốn lấy VÀ xóa.