Buat perubahan pada array

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

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.

  1. Buat array kosong bernama playerItems .


    playerItems = {}
  2. 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)
  3. 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.

  1. 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)
  2. 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) .

  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)
  2. 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.

  1. Salin array yang bernama playerItems di bawah ini.


    local playerItems = {
    "Potion",
    "Bread",
    "Bread",
    "Sleeping Bag"
    }
  2. Kode fungsi baru bernama findValue() dengan dua parameter:

    • whichArray - array untuk dicari.

    • itemName - string spesifik untuk diperiksa.


      local function findValue(whichArray, itemName)
      end
  3. 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 do
    if whichArray[currentIndex] == itemName then
    return currentIndex
    end
    end
    end
  4. Uji 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 do
    if whichArray[currentIndex] == itemName then
    --Mengirim nilai dari indeks saat ini kembali
    return currentIndex
    end
    end
    end
    local 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.

  1. Periksa apakah nilai berada di dalam valueFound ; jika demikian, hapus nilai menggunakan table.remove() .


    if valueFound then
    table.remove(playerItems, valueFound)
    end
  2. Cetak array menggunakan kode di bawah ini.


    for index = 1, #playerItems do
    local itemString = playerItems[index]
    print("Index " .. index .. ": " .. itemString)
    end
  3. Tes 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.

  1. Gunakan array bernama playerItems dengan setidaknya empat nilai dan satu set duplikat .


    local playerItems = {
    "Potion",
    "Bread",
    "Bread",
    "Sleeping Bag"
    }
  2. 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 do
    end
  3. Dalam 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 do
    if playerItems[index] == "Bread" then
    table.remove(playerItems, index)
    end
    end
  4. Gunakan kode di bawah ini untuk menambahkan loop kedua yang mencetak array.


    for index = 1, #playerItems do
    local itemString = playerItems[index]
    print("Index " .. index .. ": " .. itemString)
    end
  5. Jalankan 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.