table.sort()
Thuộc phần Logic và luồng chương trình trong hành trình Lua của Coddy. Bài học 7 trên 54.
Khi làm việc với các bảng dạng danh sách, bạn thường cần sắp xếp dữ liệu theo một thứ tự cụ thể. Lua cung cấp hàm (function) table.sort() để sắp xếp các phần tử trong bảng ngay tại chỗ, nghĩa là hàm này sửa đổi bảng ban đầu thay vì tạo một bảng mới.
Cú pháp cơ bản rất đơn giản:
table.sort(myTable)Theo mặc định, table.sort() sắp xếp số theo thứ tự tăng dần và chuỗi theo thứ tự bảng chữ cái. Đây là ví dụ với một danh sách điểm:
local scores = {85, 42, 91, 67, 55}
table.sort(scores)
-- scores hiện là {42, 55, 67, 85, 91}Với chuỗi, việc sắp xếp tuân theo thứ tự bảng chữ cái:
local names = {"Charlie", "Alice", "Bob"}
table.sort(names)
-- names giờ là {"Alice", "Bob", "Charlie"}Đôi khi, cách sắp xếp mặc định không phù hợp với nhu cầu của bạn. Bạn có thể truyền một hàm so sánh tùy chỉnh làm đối số thứ hai để kiểm soát cách so sánh các phần tử. Hàm này nhận hai phần tử và trả về true nếu phần tử thứ nhất nên đứng trước phần tử thứ hai:
local numbers = {5, 2, 8, 1}
table.sort(numbers, function(a, b)
return a > b -- Sắp xếp theo thứ tự giảm dần
end)
-- numbers giờ là {8, 5, 2, 1}Hàm table.sort() chỉ hoạt động với các bảng dạng danh sách có khóa số nguyên liên tiếp bắt đầu từ 1. Đây là công cụ mạnh mẽ giúp sắp xếp dữ liệu trước khi hiển thị hoặc xử lý theo một thứ tự cụ thể.
Thử thách
DễViết một hàm sortScoresDescending nhận một bảng scores và trả về chuỗi đã định dạng gồm các điểm số được sắp xếp theo thứ tự giảm dần.
Dùng table.sort() với một hàm so sánh tùy chỉnh để sắp xếp điểm số từ cao xuống thấp, sau đó dùng table.concat() để nối chúng thành một chuỗi duy nhất, phân cách bằng dấu phẩy.
Tham số:
scores(table): Một bảng dạng danh sách chứa các điểm số.
Giá trị trả về: Một chuỗi gồm các điểm số được sắp xếp từ cao xuống thấp, phân cách bằng dấu phẩy. Định dạng: 95,87,76,54
Tự làm thử
function sortScoresDescending(scores)
-- Viết code ở đây
end
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Logic và luồng chương trình
2Các hàm khác của thư viện table
table.concat()Tạo table và unpack()table.sort()Sắp xếp tùy chỉnh bằng hàmÔn tập: Bảng điểm cao5Dự án: Bộ máy trò chơi phiêu lưu bằng văn bản
Thiết lập dự án: Căn phòngLiên kết các phòngTự luyện tập: Trình biên dịch Lua online