ทำการเปลี่ยนแปลงในอาร์เรย์

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

เนื้อหาของอาร์เรย์มักจะต้องมีการเปลี่ยนแปลง เช่น เมื่อจำเป็นต้องลบรายการจากคลังของผู้เล่น Luau มี ฟังก์ชันในตัว สำหรับใช้กับตารางเพื่อทำให้สิ่งนี้ง่ายขึ้น

บทความนี้จะอธิบายฟังก์ชันที่สร้างไว้ล่วงหน้าสำหรับตาราง เช่น การเพิ่มและการลบ พร้อมกับการอธิบายวิธีการค้นหาค่า

เพื่อใช้ทักษะเหล่านี้ คุณจะสร้างสคริปต์ที่ช่วยในการจัดการคลังของผู้เล่น

เพิ่มค่าในอาร์เรย์

ในการเพิ่มค่าลงในอาร์เรย์ใหม่ ให้ใช้ table.insert(array, valueToInsert) พารามิเตอร์ที่สองสามารถเป็นค่าใดก็ได้ เช่น สตริง ตัวเลข หรือวัตถุทั้งหมด เช่น Player หรือ IntValue

เพื่อฝึกฝน คุณจะสร้างสคริปต์ที่เก็บรายการของผู้เล่นในตาราง จากนั้นเพิ่มเข้าไป เนื่องจากตัวอย่างนี้เป็นเพียงสคริปต์ มันสามารถใช้กับไฟล์หรือโปรเจกต์ใดก็ได้ การทดสอบโค้ดจะทำโดยใช้หน้าต่าง Output

  1. สร้างอาร์เรย์ว่างชื่อ playerItems.

    playerItems = {}
  2. เพิ่มรายการในคลังลงในอาร์เรย์โดยพิมพ์ table.insert() ในวงเล็บ ให้พิมพ์ playerItems ซึ่งเป็นตารางที่จะเพิ่มเข้าไป ตามด้วยสตริงสำหรับแต่ละรายการ ใส่ค่าลงไปอย่างน้อยสามค่า

    playerItems = {}
    table.insert(playerItems, "Potion")
    table.insert(playerItems, "Bread")
    table.insert(playerItems, "Sleeping Bag")
    print(playerItems)
  3. รันโปรเจกต์ ใน Output ขยายสามจุด ... เพื่อดูตารางที่พิมพ์ออกมา

ลบค่าออกจากอาร์เรย์

ในการลบค่า เช่น หากผู้เล่นใช้รายการหรือใครบางคนในรายการผู้เล่นที่ใช้งานอยู่ออกจากเกม ให้ใช้ table.remove() ขึ้นอยู่กับพารามิเตอร์ที่ให้ ฟังก์ชันนี้สามารถลบค่าล่าสุดของตาราง หรือที่ดัชนีเฉพาะ

ลบค่าล่าสุด

บางครั้งสคริปต์จำเป็นต้องลบรายการเฉพาะ เช่น การลบรายการแรกในคลังของผู้เล่น หรือการเลือกผู้เล่นแรกในรายการ เพื่อที่จะลบค่าล่าสุดในอาร์เรย์ ให้ใช้ table.remove(arrayName) ในกรณีนี้ พารามิเตอร์เดียวที่จำเป็นคือ ตารางเอง

  1. ใช้อาร์เรย์ของรายการจากตัวอย่างก่อนหน้า จากนั้นเพื่อที่จะลบค่าล่าสุดจากตาราง ในกรณีนี้คือ "Sleeping Bag" ให้พิมพ์ table.remove(playerItems)

    playerItems = {}
    table.insert(playerItems, "Potion")
    table.insert(playerItems, "Bread")
    table.insert(playerItems, "Sleeping bag")
    table.remove(playerItems)
    print(playerItems)
  2. รันโปรเจกต์ ในหน้าต่าง Output ค่าล่าสุด "Sleeping Bag" จะไม่พิมพ์ออกมา

ลบตามดัชนี

ในการลบค่าที่จุดเฉพาะในอาร์เรย์ ให้ป้อนในพารามิเตอร์ที่สองเป็นดัชนีที่จะลบ เช่น table.remove(arrayName, 1)

  1. ใช้ตารางเดียวกัน พิมพ์ table.remove() ในพารามิเตอร์ ให้ป้อนชื่อของตารางและ 1 ซึ่งเป็นค่าที่จะลบ

    playerItems = {}
    table.insert(playerItems, "Potion")
    table.insert(playerItems, "Bread")
    table.insert(playerItems, "Sleeping bag")
    table.remove(playerItems, 1)
  2. รันโปรเจกต์ ตรวจสอบว่าค่าตัวแรก "Potion" ถูกลบออกไป

ค้นหาค่าในอาร์เรย์

ในการค้นหาค่าที่เฉพาะเจาะจงในอาร์เรย์ เช่น ชื่อของผู้เล่นที่ชนะ ให้ใช้ฟังก์ชัน table.find() หรือคุณสามารถเขียนฟังก์ชันค้นหาของคุณเองโดยใช้ for ลูปและ if คำสั่ง

ค้นหาและคืนค่าค่าเดียว

ในการค้นหาค่าในอาร์เรย์ ให้สร้างฟังก์ชันชื่อ findValue() ที่จะตรวจสอบอาร์เรย์และหยุดเมื่อพบค่าที่ตรงกันเป็นครั้งแรก

เมื่อพบค่า ฟังก์ชันจะใช้คำสำคัญ return เพื่อคืนค่าดัชนีของค่านั้น ด้วยดัชนี คุณสามารถลบมันออกจากอาร์เรย์ได้

  1. คัดลอกอาร์เรย์ชื่อ playerItems ด้านล่าง

    local playerItems = {
    "Potion",
    "Bread",
    "Bread",
    "Sleeping Bag"
    }
  2. เขียนฟังก์ชันใหม่ชื่อ findValue() โดยมีพารามิเตอร์สองตัว:

    • whichArray - อาร์เรย์ที่ต้องการค้นหา

    • itemName - สตริงเฉพาะที่ต้องการตรวจสอบ

      local function findValue(whichArray, itemName)
      end
  3. ใน findValue() ใช้ลูป for เพื่อตรวจสอบว่าค่าต่างๆ ในอาร์เรย์ตรงกับ itemName หรือไม่ หากค่าตรงกัน ให้ใช้คำสำคัญ return เพื่อคืนค่าที่พบใน currentIndex

    local function findValue(whichArray, itemName)
    for currentIndex = 1, #whichArray do
    if whichArray[currentIndex] == itemName then
    return currentIndex
    end
    end
    end
  4. ทดสอบฟังก์ชันค้นหาด้วยการสร้างตัวแปรชื่อ valueFound และเรียกใช้ findValue() โดยส่งอาร์เรย์ที่ต้องการค้นหาและค่าที่ควรค้นหา รัน โค้ดเพื่อยืนยันว่าผลลัพธ์ที่คาดหวังคือดัชนี 2

    local function findValue(whichArray, itemName)
    for currentIndex = 1, #whichArray do
    if whichArray[currentIndex] == itemName then
    --ส่งค่าของ currentIndex กลับ
    return currentIndex
    end
    end
    end
    local valueFound = findValue(playerItems, "Bread")
    print("ค่าคือที่ดัชนี " .. valueFound)

ลบค่า

หากพบค่าที่ใช้ฟังก์ชันค้นหา สามารถลบได้ ตรวจสอบว่าค่าถูกพบด้วยคำสั่ง if

  1. ตรวจสอบว่าค่ามีอยู่ใน valueFound หรือไม่; หากมี ให้ลบค่าด้วย table.remove()

    if valueFound then
    table.remove(playerItems, valueFound)
    end
  2. พิมพ์อาร์เรย์ออกมาโดยใช้โค้ดด้านล่าง

    for index = 1, #playerItems do
    local itemString = playerItems[index]
    print("ดัชนี " .. index .. ": " .. itemString)
    end
  3. ทดสอบการเล่นและตรวจสอบว่าค่าตัวแรก "Bread" ถูกลบออกจากอาร์เรย์ ลองลบค่าตัวอื่นโดยการเปลี่ยนพารามิเตอร์ที่สองใน findValue()

    โปรดทราบว่าเนื่องจากฟังก์ชันนี้ถูกเรียกเพียงครั้งเดียว จึงลบเฉพาะกรณีแรกของ "Bread" เท่านั้น ส่วนถัดไปจะอธิบายวิธีการค้นหาและลบกรณีทั้งหมด

ค้นหาและลบค่าที่เฉพาะเจาะจงทั้งหมด

ในขณะที่โค้ดก่อนหน้านี้สามารถลบเฉพาะกรณีแรกของค่าที่พบ โค้ดนี้จะค้นหาและลบทุกกรณีจากอาร์เรย์ ตัวอย่างเช่น หากผู้เล่นต้องการขายขนมปังทั้งหมดที่ร้านค้าในเกม

  1. ใช้อาร์เรย์ชื่อ playerItems ที่มีค่าตั้งแต่สี่ค่าและชุดของ ค่าซ้ำ

    local playerItems = {
    "Potion",
    "Bread",
    "Bread",
    "Sleeping Bag"
    }
  2. เพื่อที่จะผ่านอาร์เรย์ ให้สร้างลูป for ที่ไป ย้อนกลับ ผ่าน playerItems โดยเริ่มจาก #playerItems สิ้นสุดที่ 1 และเพิ่มขึ้นทีละ -1

    for index = #playerItems, 1, -1 do
    end
  3. ในลูป ใช้คำสั่ง if เพื่อตรวจสอบว่าค่าภายใน playerItems[index] เท่ากับ "Bread" หรือไม่ และถ้าใช่ ให้ลบรายการนั้น

    for index = #playerItems, 1, -1 do
    if playerItems[index] == "Bread" then
    table.remove(playerItems, index)
    end
    end
  4. ใช้โค้ดด้านล่างเพื่อเพิ่มลูป for ที่สองที่พิมพ์อาร์เรย์

    for index = 1, #playerItems do
    local itemString = playerItems[index]
    print("ดัชนี " .. index .. ": " .. itemString)
    end
  5. รันสคริปต์และตรวจสอบว่าค่าทั้งหมดที่ชื่อ "Bread" ถูกลบออก

สรุป

ค่าต่างๆ สามารถถูกลบหรือเพิ่มลงในอาร์เรย์ได้ แต่ต้องระวังการเลื่อนดัชนีเมื่อทำเช่นนั้น ใช้ลูปเพื่อวนผ่านตารางเพื่อลบทุกกรณีของค่า หรือเพียงแค่กรณีแรกที่พบ

คำสำคัญ return สามารถใช้เพื่อหยุดลูปและส่งข้อมูลกลับไปยังที่ที่ต้องการ

เวอร์ชันที่เสร็จสมบูรณ์ของสคริปต์สามารถอ้างอิงได้ด้านล่าง

โปรเจกต์ต่อไปนี้รวมถึงสคริปต์ทั้งหมดในบทเรียนนี้ ดาวน์โหลด ที่นี่.

โปรดทราบว่าสคริปต์ทั้งหมดอยู่ใน ServerScriptService และ ปิดการใช้งาน เพื่อใช้สคริปต์ ในคุณสมบัติของมัน ให้ยกเลิกการเลือกช่อง Disabled และรัน Studio

©2026 Roblox Corporation. Roblox, โลโก้ Roblox และ Powering Imagination เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ