Isi array sering kali harus diubah, seperti saat perlu menghapus item dari inventaris pemain. Luau memiliki fungsi bawaan untuk digunakan dengan tabel agar ini lebih mudah.
Artikel ini akan merinci fungsi bawaan untuk tabel seperti menambah dan menghapus sambil menjelaskan cara mencari nilai.
Untuk menerapkan keterampilan ini, Anda akan membuat skrip yang membantu mengelola inventaris pemain.

Tambahkan nilai ke array
Untuk menambahkan nilai baru ke array, gunakan table.insert(array, valueToInsert). Parameter kedua bisa berupa nilai apa pun seperti string, angka, atau objek keseluruhan, seperti Player atau IntValue.
Untuk berlatih, Anda akan membuat skrip yang menyimpan item pemain dalam tabel, kemudian menambahkannya. Karena contoh ini hanya skrip, ini dapat digunakan dengan file atau proyek apa pun. Pengujian kode akan dilakukan menggunakan jendela Output.
Buat array kosong bernama playerItems.
playerItems = {}Tambahkan item inventaris ke dalam array dengan mengetik table.insert(). Dalam tanda kurung, ketik playerItems, tabel untuk menambah, diikuti dengan string untuk setiap item. Masukkan setidaknya tiga nilai.
playerItems = {}table.insert(playerItems, "Potion")table.insert(playerItems, "Bread")table.insert(playerItems, "Sleeping Bag")print(playerItems)Jalankan proyek. Di Output, perluas tiga titik ... untuk melihat tabel yang dicetak.
Hapus nilai dari array
Untuk menghapus nilai, seperti jika pemain menggunakan item atau seseorang dalam daftar pemain aktif meninggalkan pengalaman, gunakan table.remove(). Bergantung pada parameter yang diberikan, fungsi ini dapat menghapus nilai terakhir dari tabel, atau pada indeks tertentu.
Hapus nilai terakhir
Kadang-kadang skrip perlu menghapus item tertentu. Misalnya, menghapus item pertama dalam inventaris pemain, atau memilih pemain pertama dalam daftar. Untuk menghapus nilai terakhir dalam array, gunakan table.remove(arrayName). Dalam kasus ini, satu-satunya parameter yang dibutuhkan adalah tabel itu sendiri.
Gunakan array item dari contoh sebelumnya. Kemudian, untuk menghapus nilai terakhir dari tabel, dalam hal ini "Sleeping Bag", ketik table.remove(playerItems)
playerItems = {}table.insert(playerItems, "Potion")table.insert(playerItems, "Bread")table.insert(playerItems, "Sleeping Bag")table.remove(playerItems)print(playerItems)Jalankan proyek. Di jendela Output, nilai terakhir, "Sleeping Bag", seharusnya tidak dicetak.
Hapus berdasarkan indeks
Untuk menghapus nilai di titik tertentu dalam array, masukkan pada parameter kedua indeks yang akan dihapus, seperti table.remove(arrayName, 1).
Menggunakan tabel yang sama, ketik table.remove(). Dalam parameter, masukkan nama tabel dan 1, nilai yang akan dihapus.
playerItems = {}table.insert(playerItems, "Potion")table.insert(playerItems, "Bread")table.insert(playerItems, "Sleeping Bag")table.remove(playerItems, 1)Jalankan proyek. Periksa bahwa nilai pertama, "Potion" telah dihapus.
Cari nilai dalam array
Untuk menemukan nilai tertentu dalam array, seperti nama pemain yang menang, gunakan fungsi table.find(). Sebagai alternatif, Anda dapat membuat fungsi pencarian Anda sendiri menggunakan loop for dan pernyataan if.
Temukan dan kembalikan satu nilai
Untuk menemukan nilai dalam array, buat fungsi bernama findValue() yang berjalan melalui array dan berhenti pada kali pertama ia menemukan nilai yang cocok.
Setelah menemukan nilai tersebut, fungsi akan menggunakan kata kunci return untuk mengembalikan indeks nilai tersebut. Dengan indeks, Anda dapat menghapusnya dari array.
Salin array bernama playerItems di bawah ini.
local playerItems = {"Potion","Bread","Bread","Sleeping Bag"}Kodekan fungsi baru bernama findValue() dengan dua parameter:
whichArray - array yang akan dicari.
itemName - string spesifik yang akan diperiksa.
local function findValue(whichArray, itemName)end
Di dalam findValue(), gunakan loop for untuk memeriksa apakah ada nilai dalam array yang cocok dengan itemName. Jika nilai tersebut cocok, gunakan kata kunci return untuk mengembalikan nilai yang ditemukan di currentIndex.
local function findValue(whichArray, itemName)for currentIndex = 1, #whichArray doif whichArray[currentIndex] == itemName thenreturn currentIndexendendendUji fungsi pencarian dengan membuat variabel bernama valueFound dan memanggil findValue(). Masukkan array yang akan dicari, dan nilai apa yang harus dicari. Jalankan kode untuk memastikan bahwa output yang diharapkan adalah indeks 2.
local function findValue(whichArray, itemName)for currentIndex = 1, #whichArray doif whichArray[currentIndex] == itemName then--Mengirim nilai currentIndex kembalireturn currentIndexendendendlocal valueFound = findValue(playerItems, "Bread")print("Nilai berada di indeks " .. valueFound)
Hapus nilai
Jika nilai ditemukan menggunakan fungsi temukan, itu dapat dihapus. Periksa apakah nilai ditemukan dengan pernyataan if.
Periksa apakah ada nilai di dalam valueFound; jika ya, hapus nilai tersebut menggunakan table.remove().
if valueFound thentable.remove(playerItems, valueFound)endCetak array menggunakan kode di bawah ini.
for index = 1, #playerItems dolocal itemString = playerItems[index]print("Indeks " .. index .. ": " .. itemString)endUji coba dan periksa bahwa nilai pertama "Bread" telah dihapus dari array. Cobalah menghapus nilai lain dengan mengubah parameter kedua dalam findValue().
Perhatikan bahwa karena fungsi ini dipanggil sekali, hanya instance pertama dari "Bread" yang dihapus. Bagian berikutnya akan membahas cara menemukan dan menghapus semua instance.
Temukan dan hapus semua nilai tertentu
Sementara kode sebelumnya hanya dapat menghapus instance pertama dari suatu nilai yang ditemukan, potongan kode ini akan menemukan dan menghapus semua kemunculan dari sebuah array. Misalnya, jika, katakanlah, seorang pemain ingin menjual semua roti mereka di toko dalam permainan.
Gunakan array bernama playerItems dengan setidaknya empat nilai dan satu set duplikat.
local playerItems = {"Potion","Bread","Bread","Sleeping Bag"}Untuk menggulati array, buat loop for yang berjalan mundur melalui playerItems, mulai dari #playerItems, berakhir di 1, dan meningkat dengan -1.
for index = #playerItems, 1, -1 doendDi dalam loop, gunakan pernyataan if untuk memeriksa apakah nilai di dalam playerItems[index] sama dengan "Bread", dan jika ya, hapus item tersebut.
for index = #playerItems, 1, -1 doif playerItems[index] == "Bread" thentable.remove(playerItems, index)endendGunakan kode di bawah ini untuk menambahkan loop for kedua yang mencetak array.
for index = 1, #playerItems dolocal itemString = playerItems[index]print("Indeks " .. index .. ": " .. itemString)endJalankan skrip dan periksa bahwa semua nilai bernama "Bread" telah dihapus.
Ringkasan
Nilai dapat dihapus atau ditambahkan ke array, tetapi berhati-hatilah terhadap pergeseran indeks saat melakukannya. Gunakan loop untuk melintasi tabel untuk menghapus semua instance nilai, atau hanya instance pertama yang ditemukan.
Kata kunci return dapat digunakan untuk menghentikan loop, dan mengirim informasi kembali ke tempat yang dibutuhkan.
Versi akhir dari skrip dapat dirujuk di bawah ini.
Proyek berikut mencakup semua skrip dalam tutorial ini. Unduh di sini.
Perhatikan semua skrip berada di ServerScriptService dan dinonaktifkan. Untuk menggunakan skrip, di propertinya, hapus centang bidang Disabled dan jalankan Studio.