Jadi apa yang kita maksud dengan struktur data? . cara menyusun data. Dalam ilmu komputer, ada banyak struktur data yang berbeda (seperti yang akan Anda lihat. ), karena cara paling efisien untuk menyimpan data tergantung pada bagaimana Anda ingin menggunakan data tersebut. Apakah Anda hanya perlu membaca data, atau apakah Anda perlu memperbaruinya?
Namun, untuk saat ini, kami akan membatasinya pada Objects dan Arrays. Kita telah melihat bagaimana menggunakan kedua struktur ini untuk mengatur data. Seperti yang akan kita lihat di unit ini, bahkan hanya dengan dua struktur data ini, kita bisa mendapatkan cukup jauh dalam hal menyimpan dan mengakses data yang rumit
Lalu, apa itu struktur data bersarang? . Mari kita mulai dengan contoh sederhana
Objek di dalam Objek
Di bawah ini adalah contoh sederhana membuat objek yang memiliki kunci dan nilai kunci itu adalah objek lain
let schools = { georgiaInstituteOfTechnology: { address: "North Ave NW, Atlanta, GA 30332", phoneNumber: "(404) 894-2000", dateEstablished: "October 13, 1885" } };
Nah untuk mengakses objek di dalam objek, kita bisa menggunakan notasi titik seperti pada objek yang tidak bersarang
Sekarang kita memiliki variabel schools.georgiaInstituteOfTechnology.address; schools.georgiaInstituteOfTechnology.phoneNumber; schools.georgiaInstituteOfTechnology.dateEstablished; _0, kita dapat menggunakannya untuk mengakses kunci di dalam objek itu
Faktanya, kita bahkan tidak membutuhkan variabel perantara schools.georgiaInstituteOfTechnology.address; schools.georgiaInstituteOfTechnology.phoneNumber; schools.georgiaInstituteOfTechnology.dateEstablished; 0. Kita cukup menggunakan operator titik pada pernyataan pertama seperti ini
schools.georgiaInstituteOfTechnology.address; schools.georgiaInstituteOfTechnology.phoneNumber; schools.georgiaInstituteOfTechnology.dateEstablished; _
Semua pernyataan di atas bernilai sama dengan schools.georgiaInstituteOfTechnology.address; schools.georgiaInstituteOfTechnology.phoneNumber; schools.georgiaInstituteOfTechnology.dateEstablished; 0 contoh
Array Dalam Objek
Sekarang mari kita lihat contoh objek dengan array sebagai nilainya
let instructorData = { name: "Tim", favoriteHobbies: ["Sailing", "Hiking", "Coding"] };
Dalam contoh ini kita sekarang memiliki beberapa kunci. Kunci schools.georgiaInstituteOfTechnology.address; schools.georgiaInstituteOfTechnology.phoneNumber; schools.georgiaInstituteOfTechnology.dateEstablished; 3 memiliki nilai string yang sederhana, schools.georgiaInstituteOfTechnology.address; schools.georgiaInstituteOfTechnology.phoneNumber; schools.georgiaInstituteOfTechnology.dateEstablished; 4, tetapi kunci schools.georgiaInstituteOfTechnology.address; schools.georgiaInstituteOfTechnology.phoneNumber; schools.georgiaInstituteOfTechnology.dateEstablished; 5 memiliki nilai yang lebih kompleks yaitu array
Sama seperti pada contoh objek di dalam objek, kita dapat mengakses elemen dalam array dengan menggunakan notasi titik, lalu mengakses array secara normal. Untuk mendapatkan elemen pertama dalam array, kodenya adalah sebagai berikut
Bagaimana Anda menambahkan hobi lain ke array schools.georgiaInstituteOfTechnology.address; schools.georgiaInstituteOfTechnology.phoneNumber; schools.georgiaInstituteOfTechnology.dateEstablished; 5 di dalam objek?
Objek Kompleks
Sekarang mari kita lihat contoh yang menggabungkan objek dan larik
Jadi Anda mungkin berpikir, apakah saya benar-benar akan bekerja dengan data seperti ini? . Sangat umum, ketika Anda menerima data dalam jumlah besar dari pihak ketiga, Anda akan diberikan dalam format yang menyertakan objek dan/atau array bersarang. Sangat penting bagi Anda untuk memahami cara mengakses data dalam struktur data bersarang ini. Jika Anda tidak dapat mencapai titik di mana Anda dapat dengan mudah memanipulasi struktur data bersarang, Anda akan mengalami kesulitan mengintegrasikan segala jenis data luar ke dalam aplikasi yang akan Anda bangun nanti. Salin dan tempel contoh sebelumnya ke dalam cuplikan atau buat contoh Anda sendiri untuk berlatih
Mengakses dan Menetapkan nilai dalam objek bersarang
Menggunakan notasi titik adalah cara yang bagus untuk mengakses nilai dalam objek bersarang. Namun, ketika secara dinamis menetapkan nilai dalam objek bersarang (ketika Anda tidak tahu persis apa nama kuncinya), Anda harus menggunakan notasi braket. Mari kita lihat contoh singkatnya. Pada contoh di bawah ini, kami ingin menulis fungsi yang menambahkan kunci ke objek bersarang
Ingat, bahwa ketika menambahkan kunci ke suatu objek, jika Anda TIDAK tahu persis apa nama kunci itu (artinya kunci itu akan dibuat secara dinamis), Anda HARUS menggunakan notasi braket
Menulis fungsi untuk menghasilkan nilai dalam struktur data bersarang
Saat Anda berinteraksi dengan struktur data bersarang, terkadang merangkum beberapa logika Anda ke dalam sebuah fungsi akan membantu. Ini terutama benar jika Anda perlu memanipulasi struktur data dengan cara yang sama beberapa kali. Di bawah ini adalah beberapa contoh penulisan fungsi yang berinteraksi dengan struktur data bersarang dengan cara yang berbeda. Kita akan mulai dengan contoh schools.georgiaInstituteOfTechnology.address; schools.georgiaInstituteOfTechnology.phoneNumber; schools.georgiaInstituteOfTechnology.dateEstablished; _7 yang sama dari sebelumnya
let instructorData = { name: "Elie", additionalData: { instructor: true, favoriteHobbies: ["Playing Cello", "Tennis", "Coding"], moreDetails: { favoriteBasketballTeam: "New York Knicks", numberOfSiblings: 3, isYoungest: true, hometown: { city: "West Orange", state: "NJ", }, citiesLivedIn: ["Seattle", "Providence", "New York"] } } };
Sekarang mari kita coba menulis beberapa fungsi yang beroperasi pada struktur data bersarang ini. Jawabannya ada di bawah - tetapi coba lakukan sendiri terlebih dahulu
Latihan
Tulis fungsi yang disebut schools.georgiaInstituteOfTechnology.address; schools.georgiaInstituteOfTechnology.phoneNumber; schools.georgiaInstituteOfTechnology.dateEstablished; _8 konsol itu. mencatat semua nilai dalam array kotaLivedIn
Tulis fungsi yang disebut schools.georgiaInstituteOfTechnology.address; schools.georgiaInstituteOfTechnology.phoneNumber; schools.georgiaInstituteOfTechnology.dateEstablished; _9 konsol itu. mencatat semua nilai di dalam objek let instructorData = { name: "Tim", favoriteHobbies: ["Sailing", "Hiking", "Coding"] }; 0
Mari tulis sebuah fungsi bernama let instructorData = { name: "Tim", favoriteHobbies: ["Sailing", "Hiking", "Coding"] }; _1 yang menerima dua parameter, kunci dan nilai dan menambahkan kunci dan nilai ke objek let instructorData = { name: "Tim", favoriteHobbies: ["Sailing", "Hiking", "Coding"] }; 2 dan mengembalikan objek let instructorData = { name: "Tim", favoriteHobbies: ["Sailing", "Hiking", "Coding"] }; 2
Terakhir, mari tulis fungsi bernama let instructorData = { name: "Tim", favoriteHobbies: ["Sailing", "Hiking", "Coding"] }; 4 yang menghapus kunci di objek let instructorData = { name: "Tim", favoriteHobbies: ["Sailing", "Hiking", "Coding"] }; 2 dan mengembalikan objek let instructorData = { name: "Tim", favoriteHobbies: ["Sailing", "Hiking", "Coding"] }; 2 (kunci baru yang ditambahkan di atas tidak termasuk dalam contoh ini)
Solusi
Untuk sebagian besar fungsi ini, menyimpan informasi bersarang dalam sebuah variabel akan berguna untuk menghindari keharusan mengetiknya berkali-kali. Berikut adalah solusi untuk masalah sebelumnya
displayCities
function displayCities(){ let cityArray = instructorData.additionalData.moreDetails.citiesLivedIn; for(let i=0; i< cityArray.length; i++){ console.log(cityArray[i]); } }
tampilkan Data Kota Asal
function displayHometownData(){ let hometownObject = instructorData.additionalData.moreDetails.hometown; for(let key in hometownObject){ console.log(hometownObject[key]); } }
addDetail
function addDetail(key,value){ let detailsObject = instructorData.additionalData.moreDetails; detailsObject[key] = value; return detailsObject; }
hapusDetail
Kita perlu memastikan bahwa kita menggunakan notasi braket dan bukan notasi titik saat mengakses objek kita. Karena kita tidak mengetahui nama kunci sampai fungsi dipanggil, kita perlu mengakses kunci itu secara dinamis, yang harus dilakukan dengan menggunakan notasi braket