Memeriksa kunci dan nilai
Termasuk bagian Logika dan Alur dalam perjalanan Dart di Coddy. Pelajaran 27 dari 65.
Sebelum mengakses data dalam Map, penting untuk memastikan bahwa kunci atau nilai yang kamu cari benar-benar ada. Dart menyediakan dua method untuk ini: containsKey() dan containsValue().
method containsKey() memeriksa apakah kunci tertentu ada di map, lalu mengembalikan true jika ditemukan dan false jika tidak. Ini sangat berguna sebelum mencoba mengakses nilai, sehingga kamu dapat menghindari kemungkinan error.
Map<String, String> userPermissions = {
'user123': 'admin',
'user456': 'editor',
'user789': 'viewer'
};
bool hasUser = userPermissions.containsKey('user123');
print(hasUser); // true
bool hasUnknownUser = userPermissions.containsKey('user999');
print(hasUnknownUser); // falseDemikian pula, containsValue() memeriksa apakah nilai tertentu ada di mana pun dalam map. Method ini menelusuri semua nilai dan mengembalikan true jika menemukan kecocokan.
bool hasAdmin = userPermissions.containsValue('admin');
print(hasAdmin); // trueMethod ini sangat penting untuk menulis kode yang aman dan menangani data yang hilang dengan baik, sehingga mencegah error saat program berjalan ketika kamu bekerja dengan isi map yang dinamis.
Tantangan
MudahBuat program yang mengelola sistem autentikasi pengguna dengan memverifikasi kredensial pengguna dan memeriksa tingkat izin. Programmu harus:
- Membaca input string yang mewakili nama sistem
- Membaca beberapa pasang input yang mewakili nama pengguna dan tingkat izinnya (input akan berakhir saat kamu menerima
"users_done") - Membaca input string yang mewakili nama pengguna yang akan diperiksa
- Membaca input string yang mewakili tingkat izin yang akan diverifikasi
- Membuat Map untuk menyimpan nama pengguna sebagai kunci dan tingkat izinnya sebagai nilai
- Menggunakan
containsKey()untuk memeriksa apakah nama pengguna ada di sistem - Menggunakan
containsValue()untuk memeriksa apakah tingkat izin yang ditentukan ada di mana pun dalam sistem - Mencetak analisis autentikasi dengan format persis seperti yang ditunjukkan di bawah
Misalnya, jika nama sistemnya "Corporate Network", pengguna yang ada mencakup "alice" dengan "admin", "bob" dengan "editor", "charlie" dengan "viewer", "diana" dengan "admin", nama pengguna yang akan diperiksa adalah "alice", dan tingkat izin yang akan diverifikasi adalah "admin", programmu harus menghasilkan:
System: Corporate Network
User Database: {alice: admin, bob: editor, charlie: viewer, diana: admin}
Authentication Check:
Username 'alice' exists: true
Permission 'admin' exists in system: true
User 'alice' has permission 'admin': true
Access Status: GRANTED - User authenticated with valid permissions
Security Level: High (admin access detected)Jika nama sistemnya "School Portal", pengguna yang ada mencakup "teacher1" dengan "instructor", "student1" dengan "student", "admin1" dengan "administrator", nama pengguna yang akan diperiksa adalah "guest", dan tingkat izin yang akan diverifikasi adalah "student", programmu harus menghasilkan:
System: School Portal
User Database: {teacher1: instructor, student1: student, admin1: administrator}
Authentication Check:
Username 'guest' exists: false
Permission 'student' exists in system: true
User 'guest' has permission 'student': false
Access Status: DENIED - Username not found in system
Security Level: Low (user not registered)Jika nama sistemnya "Library System", pengguna yang ada mencakup "librarian" dengan "staff", "member1" dengan "member", "member2" dengan "member", nama pengguna yang akan diperiksa adalah "librarian", dan tingkat izin yang akan diverifikasi adalah "premium", programmu harus menghasilkan:
System: Library System
User Database: {librarian: staff, member1: member, member2: member}
Authentication Check:
Username 'librarian' exists: true
Permission 'premium' exists in system: false
User 'librarian' has permission 'premium': false
Access Status: DENIED - Permission level not available
Security Level: Medium (valid user, invalid permission)Programmu harus menggunakan containsKey() untuk memverifikasi apakah nama pengguna ada dan containsValue() untuk memeriksa apakah tingkat izin tersebut ada di mana pun dalam sistem. Untuk memeriksa apakah pengguna tertentu memiliki izin tertentu, bandingkan tingkat izin aktual pengguna dengan tingkat izin yang diminta. Tentukan tingkat keamanan berdasarkan hasilnya: "High" jika akses diberikan dengan izin jenis admin (admin, administrator, staff), "Medium" jika pengguna ada tetapi izinnya salah, dan "Low" jika pengguna tidak ada. Format inputnya adalah: nama sistem, lalu nama pengguna dan tingkat izin secara bergantian, diakhiri dengan "users_done", kemudian nama pengguna yang akan diperiksa dan tingkat izin yang akan diverifikasi.
Coba sendiri
import 'dart:io';
void main() {
// Baca nama sistem
String? systemName = stdin.readLineSync();
// Buat Map untuk menyimpan nama pengguna dan tingkat izin mereka
Map<String, String> userDatabase = {};
// Baca data pengguna hingga "users_done"
while (true) {
String? input = stdin.readLineSync();
if (input == "users_done") {
break;
}
String username = input!;
String? permission = stdin.readLineSync();
userDatabase[username] = permission!;
}
// Baca nama pengguna yang akan diperiksa dan tingkat izin yang akan diverifikasi
String? usernameToCheck = stdin.readLineSync();
String? permissionToVerify = stdin.readLineSync();
// TODO: Tulis kodemu di bawah ini
// Gunakan containsKey() untuk memeriksa apakah nama pengguna ada
// Gunakan containsValue() untuk memeriksa apakah tingkat izin ada dalam sistem
// Periksa apakah pengguna tersebut memiliki izin yang dimaksud
// Tentukan status akses dan tingkat keamanan:
// - "High (admin access detected)" jika akses diberikan DAN izinnya adalah admin, administrator, atau staff
// - "Medium (standard access)" jika akses diberikan tetapi izinnya bukan tipe admin
// - "Medium (valid user, invalid permission)" jika pengguna ada tetapi izinnya tidak sesuai
// - "Low (user not registered)" jika pengguna tidak ada
// Cetak hasil analisis autentikasi
print("System: $systemName");
print("User Database: $userDatabase");
print("Authentication Check:");
// Tambahkan pernyataan output-mu di sini
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Manipulasi list Tingkat Lanjut
Properti list: first dan lastStatus list: isEmpty dan isNotEmpMembalikkan listMenambahkan ke list: insertMenghapus dari list: removeWhereMencari dalam list: indexOfMengurutkan listMengacak listRekap: Pengatur list4Manipulasi Map Lanjutan
Melakukan perulangan pada MapMemeriksa kunci dan nilaiProperti Map: kunci dan nilaiPenambahan Bersyarat: putIfAbsentMenghapus Entri dari MapMap BersarangRingkasan: Pembaruan Inventaris2Operasi Fungsional pada list
Mengubah dengan 'map'Menyaring dengan 'where'Menggunakan '.toList()'Memeriksa Kondisi dengan 'any'Kondisi dengan 'every'Menemukan dengan 'firstWhere'Ulasan: Penyaringan Data5Proyek: Perhitungan Keranjang Belanja
Menyiapkan ProyekMenambahkan Barang ke Keranjang3set
Apa itu set?Membuat setMenambahkan dan menghapus elemen dari setMemeriksa elemen dalam setMengubah list menjadi setGabungan setIrisan setSelisih setRangkuman: Daftar tamu unikLatihan sendiri: Compiler Dart online