ความต้องการทั่วไปในหลายโครงสร้างข้อมูลคือการคืนค่าเป็นมูลค่าบทความนี้จะครอบคลุมการค้นหาตารางโดยใช้ pairs() หรือ ipairs() สำหรับครึ่งหนึ่งขององค์ประกอบตารางเช่นกุญแจหรือค่าเพื่อค้นหาและส่งคืนอีกครึ่งหนึ่ง
ตัวอย่างใช้รายการเรือที่รอการซ่อมแซม ipairs() ใช้เพื่อส่งคืนตําแหน่งเรือในเส้น
local shipToFind = "Void Racer"
-- เรือรอซ่อม
local waitingShips = {"Battle Sun", "Void Racer", "The Big Slow"}
-- รับตำแหน่งในบรรทัด
local function getPlaceInLine(shipName)
for placeInLine, ship in ipairs(waitingShips) do
if ship == shipName then
return placeInLine
end
end
end
--พิมพ์สถานที่ในบรรทัด
local placeInLine = getPlaceInLine(shipToFind)
print("Your place in line is " .. placeInLine)
ตัวอย่างการค้นหาสารานุกรม
คุณเคยค้นหาสัตว์เลี้ยงที่หายไปในบ้านไปห้องต่อห้องหรือไม่? ในรหัสของคุณเองฟังก์ชันเพื่อค้นหาผ่านสารานุกรมชื่อบ้านเพื่อดูห้องที่มีลูกสุนัขที่หายไป
คัดลอกสารานุกรมด้านล่างเพื่อใช้เป็นบ้าน
local house = {kitchen = "pile of Junk",livingRoom = "kitten",bedroom1 = "nobody there",bedroom2 = "puppy",}สร้างฟังก์ชันใหม่ที่เรียกว่า findPet() เพื่อค้นหาสารานุกรม รวมถึงพารามิเตอร์สำหรับสารานุกรมที่จะค้นหาและค่าที่จะค้นหา
ใช้ pairs() เพื่อตรวจสอบผ่านสารานุกรม ลองเขียนโค้ดของคุณเองก่อนตรวจสอบงานของคุณในโซลูชันด้านล่าง
local function findPet(whereToSearch, searchFor)for place, value in pairs(whereToSearch) doendendเมื่อลูป for เดินผ่านไดเรกทอรี ให้ใช้ return เพื่อส่งกลับห้องที่สัตว์เลี้ยงถูกพบ
local function findPet(whereToSearch, searchFor)for place, value in pairs(whereToSearch) doif value == searchFor thenreturn placeendendend