0Pricing
Lua Academy · บทเรียน

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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. table.sort พร้อมตัวเปรียบเทียบ
  2. table.concat และ table.move
  3. การคัดลอกแบบลึกและแบบตื้น
  4. การแปลงตาราง: map, filter, reduce
← กลับไปที่ Lua Academy