Đây là nghệ thuật Javascript nhiều hơn nếu bạn đến đây để tìm kiếm nó
Theo tinh thần của một câu trả lời khác được sử dụng reduceRight()
, nhưng ngắn hơn:
[3, 2, 1, 5].reduceRight(a => a);
Nó dựa vào thực tế là, trong trường hợp bạn không cung cấp giá trị ban đầu, phần tử cuối cùng được chọn làm giá trị ban đầu (kiểm tra tài liệu ở đây ). Vì cuộc gọi lại chỉ tiếp tục trả về giá trị ban đầu, nên phần tử cuối cùng sẽ là phần tử được trả về cuối cùng.
Coi chừng rằng điều này nên được coi là nghệ thuật Javascript và không có nghĩa là tôi sẽ khuyên bạn nên làm điều đó, chủ yếu là vì nó chạy trong thời gian O (n), nhưng cũng vì nó làm tổn thương khả năng đọc.
Và bây giờ cho câu trả lời nghiêm túc
Cách tốt nhất tôi thấy (xem xét bạn muốn nó ngắn gọn hơn array[array.length - 1]
) là:
const last = a => a[a.length - 1];
Sau đó, chỉ cần sử dụng chức năng:
last([3, 2, 1, 5])
Hàm này thực sự hữu ích trong trường hợp bạn đang xử lý một mảng ẩn danh như [3, 2, 1, 5]
được sử dụng ở trên, nếu không, bạn phải khởi tạo nó hai lần, điều này sẽ không hiệu quả và xấu:
[3, 2, 1, 5][[3, 2, 1, 5].length - 1]
Ừ
Ví dụ: đây là tình huống bạn có một mảng ẩn danh và bạn phải xác định một biến, nhưng bạn có thể sử dụng last()
thay thế:
last("1.2.3".split("."));
const [lastItem] = arr.slice(-1)