Menu
CoddyTech

Menemukan dengan 'firstWhere'

Termasuk bagian Logika dan Alur dalam perjalanan Dart di Coddy. Pelajaran 15 dari 65.

Saat kamu perlu menemukan elemen tertentu dalam list yang memenuhi kriteria tertentu, method firstWhere() memberikan solusi yang efisien. Berbeda dengan method pemfilteran yang mengembalikan semua elemen yang cocok, firstWhere() berhenti mencari segera setelah menemukan elemen pertama yang memenuhi kondisimu.

method firstWhere() menerima fungsi pengujian yang mengembalikan true atau false untuk setiap elemen. method ini memeriksa elemen satu per satu sampai menemukan elemen pertama yang lolos pengujian, lalu langsung mengembalikan elemen tersebut.

List<int> numbers = [1, 3, 8, 15, 22, 7];

// Temukan bilangan genap pertama
int firstEven = numbers.firstWhere((number) => number % 2 == 0);
print(firstEven);  // 8

Untuk situasi ketika tidak ada elemen yang cocok dengan kondisimu, firstWhere() menyediakan parameter opsional orElse. Parameter ini menerima fungsi yang mengembalikan nilai default ketika tidak ditemukan kecocokan, sehingga programmu tidak mengalami error.

challenge icon

Tantangan

Mudah

Buat program yang mengelola sistem layanan pelanggan dengan menemukan keluhan pelanggan pertama yang memerlukan penanganan segera. Programmu harus:

  1. Membaca input string yang mewakili nama departemen
  2. Membaca beberapa input bilangan bulat yang mewakili tingkat prioritas keluhan (input akan berakhir saat kamu menerima -1)
  3. Membaca input bilangan bulat yang mewakili ambang prioritas mendesak
  4. Menggunakan method firstWhere() untuk menemukan keluhan pertama dengan tingkat prioritas yang lebih besar dari atau sama dengan ambang prioritas mendesak
  5. Mencetak hasil layanan pelanggan dalam format persis seperti yang ditampilkan di bawah

Misalnya, jika nama departemennya adalah "Technical Support", tingkat prioritasnya adalah 3, 7, 2, 9, 4, dan ambang prioritas mendesaknya adalah 8, programmu harus menghasilkan output berikut:

Department: Technical Support
All complaints: [3, 7, 2, 9, 4]
Urgent threshold: 8
Searching for first complaint >= 8
First urgent complaint: 9
Status: Urgent complaint found - immediate action required

Jika nama departemennya adalah "Billing Department", tingkat prioritasnya adalah 4, 6, 3, 5, dan ambang prioritas mendesaknya adalah 7, programmu harus menghasilkan output berikut:

Department: Billing Department
All complaints: [4, 6, 3, 5]
Urgent threshold: 7
Searching for first complaint >= 7
First urgent complaint: Not found
Status: No urgent complaints - continue normal processing

Jika nama departemennya adalah "Sales Support", tingkat prioritasnya adalah 10, 2, 8, dan ambang prioritas mendesaknya adalah 9, programmu harus menghasilkan output berikut:

Department: Sales Support
All complaints: [10, 2, 8]
Urgent threshold: 9
Searching for first complaint >= 9
First urgent complaint: 10
Status: Urgent complaint found - immediate action required

Programmu harus menggunakan method firstWhere() untuk menemukan prioritas keluhan pertama yang lebih besar dari atau sama dengan ambang prioritas mendesak. Jika tidak ada keluhan mendesak yang ditemukan, tampilkan "Not found" untuk keluhan mendesak pertama dan tampilkan "No urgent complaints - continue normal processing" sebagai status. Jika keluhan mendesak ditemukan, tampilkan tingkat prioritasnya dan tampilkan "Urgent complaint found - immediate action required" sebagai status.

Coba sendiri

import 'dart:io';

void main() {
  // Baca nama departemen
  String? department = stdin.readLineSync();
  
  // Baca tingkat prioritas keluhan hingga -1
  List<int> complaints = [];
  while (true) {
    int priority = int.parse(stdin.readLineSync()!);
    if (priority == -1) break;
    complaints.add(priority);
  }
  
  // Baca ambang batas mendesak
  int urgentThreshold = int.parse(stdin.readLineSync()!);
  
  // TODO: Tulis kodemu di bawah ini
  // Gunakan method firstWhere() untuk menemukan keluhan pertama dengan prioritas >= urgentThreshold
  
  // Tampilkan hasilnya sebagai output
  print('Department: $department');
  print('All complaints: $complaints');
  print('Urgent threshold: $urgentThreshold');
  print('Searching for first complaint >= $urgentThreshold');
  // Tampilkan hasil keluhan mendesak pertama
  // Tampilkan pesan status
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler Dart online