Konten array sering harus diubah, seperti ketika perlu menghapus item dari inventaris pemain.Luau memiliki fungsi bawaan untuk digunakan dengan tabel untuk memudahkan ini.
Artikel ini akan menguraikan fungsi pra-dibangun untuk tabel seperti tambah dan hapus sambil menjelaskan cara mencari nilai.
Untuk menerapkan keterampilan ini, Anda akan membuat skrip yang membantu mengelola inventaris pemain dalam game.

Tambahkan nilai ke array
Untuk menambahkan nilai baru ke array, gunakan table.insert(array, valueToInsert) .Parameter kedua bisa menjadi nilai apa pun seperti string, angka, atau seluruh objek, seperti Player atau IntValue .
Untuk berlatih, Anda akan membuat skrip yang menyimpan item pemain di dalam tabel, lalu tambahkan ke dalamnya.Karena contoh ini hanya sebuah skrip, itu 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 array dengan mengetik table.insert() .Dalam kurungan, ketik playerItems , tabel untuk ditambahkan, 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 cetak.
Hapus nilai dari array
Untuk menghapus nilai, seperti jika pemain menggunakan item atau seseorang dalam daftar pemain aktif meninggalkan pengalaman, gunakan table.remove() .Tergantung pada parameter yang disediakan, fungsi dapat menghapus nilai terakhir dari tabel, atau di indeks tertentu.
Hapus nilai terakhir
Terkadang skrip perlu menghapus item tertentu.Sebagai kejadian, menghapus item pertama di inventaris pemain, atau memilih pemain pertama di daftar.Untuk menghapus nilai terakhir dalam array, gunakan table.remove(arrayName) .Dalam kasus penggunaan ini, satu-satunya parameter yang diperlukan adalah tabel itu sendiri.
Gunakan array item dari contoh sebelumnya. Kemudian, untuk menghapus nilai terakhir dari tabel, dalam kasus 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 oleh indeks
Untuk menghapus nilai pada titik tertentu dalam array, masukkan dalam parameter kedua indeks yang harus dihapus, seperti table.remove(arrayName, 1) .
Menggunakan tabel yang sama, ketik table.remove() . Dalam parameter, masukkan nama tabel dan 1 , nilai yang harus dihapus.
playerItems = {}table.insert(playerItems, "Potion")table.insert(playerItems, "Bread")table.insert(playerItems, "Sleeping bag")table.remove(playerItems, 1)Jalankan proyek. Periksa apakah nilai pertama, "Potion" telah dihapus.
Cari nilai dalam array
Untuk menemukan nilai spesifik dalam array, seperti nama pemain pemenang, gunakan fungsi table.find().Alternatifnya, Anda dapat membuat fungsi pencarian sendiri menggunakan loop for dan pernyataan if.
Temukan dan return nilai tunggal
Untuk menemukan nilai dalam array, buat fungsi bernama findValue() yang melalui array dan berhenti saat pertama kali menemukan nilai yang cocok.
Setelah menemukan nilainya, fungsi akan menggunakan kata kunci return untuk mengembalikan indeks nilai itu. Dengan indeks, Anda dapat menghapusnya dari array.
Salin array yang bernama playerItems di bawah ini.
local playerItems = {"Potion","Bread","Bread","Sleeping Bag"}Kode fungsi baru bernama findValue() dengan dua parameter:
whichArray - array untuk dicari.
itemName - string spesifik untuk diperiksa.
local function findValue(whichArray, itemName)end
Di dalam findValue() , gunakan loop untuk memeriksa apakah ada nilai di array yang cocok dengan itemName .Jika nilai 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().Lewati dalam array untuk dicari, dan nilai apa yang harus dicari. Jalankan kode untuk mengkonfirmasi bahwa output yang diharapkan adalah indeks 2.
local function findValue(whichArray, itemName)for currentIndex = 1, #whichArray doif whichArray[currentIndex] == itemName then--Mengirim nilai dari indeks saat ini kembalireturn currentIndexendendendlocal valueFound = findValue(playerItems, "Bread")print("The value is at index " .. valueFound)
Menghapus nilai
Jika nilai ditemukan menggunakan fungsi find, nilai tersebut dapat dihapus. Periksa apakah nilai ditemukan dengan pernyataan if.
Periksa apakah nilai berada di dalam valueFound ; jika demikian, hapus nilai 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("Index " .. index .. ": " .. itemString)endTes main dan periksa bahwa nilai pertama "Bread" dihapus dari array.Coba hapus nilai lain dengan mengubah parameter kedua di findValue() .
Perhatikan bahwa karena fungsi ini dipanggil sekali, hanya instans pertama dari "Bread" yang dihapus.Bagian berikut akan menutupi cara menemukan dan menghapus semua instansi.
Temukan dan hapus semua nilai spesifik
Sementara kode sebelumnya hanya dapat menghapus instansi pertama dari nilai yang ditemukan, bagian kode ini akan menemukan dan menghapus semua kejadian dari array.Sebagai contoh, jika, katakanlah, seorang pemain ingin menjual semua roti mereka di toko dalam game.
Gunakan array bernama playerItems dengan setidaknya empat nilai dan satu set duplikat .
local playerItems = {"Potion","Bread","Bread","Sleeping Bag"}Untuk pergi melalui array, buat loop for yang pergi ke belakang melalui playerItems, mulai dari #playerItems, berakhir di 1, dan meningkatkan dengan -1.
for index = #playerItems, 1, -1 doendDalam loop, gunakan pernyataan if untuk memeriksa apakah nilai di dalam playerItems[index] sama dengan "Bread" , dan jika demikian, hapus itemnya.
for index = #playerItems, 1, -1 doif playerItems[index] == "Bread" thentable.remove(playerItems, index)endendGunakan kode di bawah ini untuk menambahkan loop kedua yang mencetak array.
for index = 1, #playerItems dolocal itemString = playerItems[index]print("Index " .. index .. ": " .. itemString)endJalankan skrip dan periksa bahwa semua nilai yang disebut "Roti" dihapus.
Singkatan
Nilai dapat dihapus atau ditambahkan ke array, tetapi berhati-hatilah terhadap indeks bergeser melakukannya.Gunakan loop untuk mengulang melalui tabel untuk menghapus semua instansi nilai, atau hanya instansi pertama yang ditemukan.
Kata kunci return dapat digunakan untuk menghentikan loop, dan mengirim informasi kembali di mana diperlukan.
Versi selesai dari skrip dapat di referensikan di bawah ini.
Proyek berikut termasuk semua skrip dalam tutorial ini. Unduh di sini .
Perhatikan semua skrip ada di ServerScriptService dan dinonaktifkan .Untuk menggunakan skrip, dalam propertinya, centangkan bidang Dinonaktifkan dan jalankan Studio.