table.sort พร้อมตัวเปรียบเทียบ
เรียงลำดับตารางด้วยฟังก์ชันตัวเปรียบเทียบแบบกำหนดเองและกลยุทธ์การเรียงลำดับแบบคงลำดับเดิม
table.sort พร้อมตัวเปรียบเทียบ เป็นบทเรียน Lua Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Lua Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Lua Academy มีบทเรียนทั้งหมด 4 บทเรียน
table.sort คืออะไร
table.sort เรียงลำดับตารางในตำแหน่งเดิมโดยใช้ฟังก์ชันเปรียบเทียบ หากไม่ระบุฟังก์ชันเปรียบเทียบ จะใช้ตัวดำเนินการ <
การเรียงลำดับจากน้อยไปมากตามค่าเริ่มต้น
เรียกใช้ table.sort(t) กับตารางตัวเลขหรือสตริงเพื่อเรียงลำดับจากน้อยไปมาก
local nums = {5, 2, 8, 1, 9}
table.sort(nums)
for _, v in ipairs(nums) do print(v) endฟังก์ชันเปรียบเทียบแบบกำหนดเอง
ส่งฟังก์ชัน function(a, b) return a < b end เป็นอาร์กิวเมนต์ตัวที่สอง
local words = {"banana", "apple", "cherry"}
table.sort(words, function(a, b) return a < b end)
print(table.concat(words, ", "))การเรียงลำดับจากมากไปน้อย
กลับเงื่อนไขการเปรียบเทียบเพื่อเรียงลำดับจากมากไปน้อย
local nums = {3, 1, 4, 1, 5, 9}
table.sort(nums, function(a, b) return a > b end)
print(table.concat(nums, ", "))การเรียงลำดับตารางตามฟิลด์
เรียงอาร์เรย์ของระเบียนตามคีย์ฟิลด์ที่ระบุ
local people = {
{name="Charlie", age=30},
{name="Alice", age=25},
{name="Bob", age=28}
}
table.sort(people, function(a, b) return a.age < b.age end)
for _, p in ipairs(people) do print(p.name, p.age) endการเรียงลำดับหลายคีย์
เรียงตามคีย์หลักก่อน แล้วใช้คีย์รองสำหรับรายการที่มีค่าเท่ากัน
table.sort(people, function(a, b)
if a.age ~= b.age then return a.age < b.age end
return a.name < b.name
end)หมายเหตุเรื่องความเสถียร
table.sort ของ Lua ไม่รับประกันว่าจะเสถียร องค์ประกอบที่เท่ากันอาจปรากฏในลำดับใดก็ได้ ใช้ดัชนีเป็นตัวตัดสินเมื่อค่าหลักเท่ากันเพื่อให้ได้ผลลัพธ์ที่กำหนดแน่นอน
การเรียงสตริงโดยไม่คำนึงถึงตัวพิมพ์
ปรับรูปแบบด้วย string.lower ภายในฟังก์ชันเปรียบเทียบ
table.sort(words, function(a, b)
return a:lower() < b:lower()
end)การเรียงลำดับด้วยตัวดึงคีย์
แคชคีย์ที่ดึงออกมาเพื่อหลีกเลี่ยงการคำนวณซ้ำระหว่างการเรียงลำดับ โดยใช้แนวทางการแปลงแบบชวาร์ตเซียน
local function sortBy(t, keyFn)
local keyed = {}
for i, v in ipairs(t) do keyed[i] = {val=v, key=keyFn(v)} end
table.sort(keyed, function(a, b) return a.key < b.key end)
for i, item in ipairs(keyed) do t[i] = item.val end
endการเรียงลำดับตารางขนาดใหญ่
สำหรับตารางขนาดใหญ่มาก ให้พิจารณาการแปลงแบบชวาร์ตเซียน: จับคู่องค์ประกอบแต่ละรายการกับคีย์สำหรับเรียงลำดับ เรียงลำดับ แล้วดึงองค์ประกอบออก วิธีนี้หลีกเลี่ยงการคำนวณคีย์ซ้ำทุกครั้งที่เปรียบเทียบ
การเรียงในตำแหน่งเดิมกับการคัดลอก
table.sort เปลี่ยนแปลงตารางเดิม หากต้องการเรียงสำเนา ให้ใช้ table.move ก่อน หรือวนซ้ำเพื่อโคลนตาราง แล้วจึงเรียงโคลน
คำถามเกี่ยวกับฟังก์ชันเปรียบเทียบ
ฟังก์ชันเปรียบเทียบใดเรียงตัวเลขจาก น้อยไปมาก
ทบทวน: table.sort
table.sort เรียงลำดับในตำแหน่งเดิม รับฟังก์ชันเปรียบเทียบเสริม ไม่รับประกันความเสถียร และมักใช้ร่วมกับกลยุทธ์ที่อิงฟิลด์หรือหลายคีย์สำหรับข้อกำหนดการเรียงลำดับที่ซับซ้อน
คำถามที่พบบ่อย
บทเรียน “table.sort พร้อมตัวเปรียบเทียบ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “table.sort พร้อมตัวเปรียบเทียบ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Lua Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Lua Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “table.sort พร้อมตัวเปรียบเทียบ”
เรียงลำดับตารางด้วยฟังก์ชันตัวเปรียบเทียบแบบกำหนดเองและกลยุทธ์การเรียงลำดับแบบคงลำดับเดิม คุณปฏิบัติ Lua Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Lua Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Lua Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “table.sort พร้อมตัวเปรียบเทียบ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Lua Academy นี้ได้ไหม
ได้ บทเรียน Lua Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- table.sort พร้อมตัวเปรียบเทียบ
- table.concat และ table.move
- การคัดลอกแบบลึกและแบบตื้น
- การแปลงตาราง: map, filter, reduce