Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Cách lấy phần tử cuối cùng của mảng JavaScript

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ề undefined nế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ề undefined nế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ápImmutable?Hỗ trợ index âm?An toàn mảng rỗng?Hiệu năngKhuyên dùng
arr.at(-1)✅✅✅ (undefined)TốtCHUẨ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ấtLegacy, critical perf
arr.pop()❌ (Mutate)❌✅ (undefined)NhanhChỉ 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.