Menghapus dari list: removeWhere
Termasuk bagian Logika dan Alur dalam perjalanan Dart di Coddy. Pelajaran 5 dari 65.
Terkadang kamu perlu menghapus beberapa elemen dari list berdasarkan kondisi tertentu. Daripada menghapus elemen satu per satu, Dart menyediakan method removeWhere() yang dapat menghapus semua elemen yang memenuhi kondisi pengujian dalam satu operasi.
Method removeWhere() menerima fungsi pengujian sebagai parameternya. Fungsi ini menerima setiap elemen dalam list dan mengembalikan true jika elemen tersebut harus dihapus, atau false jika elemen tersebut harus tetap ada. Method ini kemudian menghapus semua elemen yang fungsi pengujiannya mengembalikan true.
List<int> numbers = [1, 2, 3, 4, 5, 6, 7, 8];
// Hapus semua bilangan genap
numbers.removeWhere((number) => number % 2 == 0);
print(numbers); // [1, 3, 5, 7]Pendekatan ini jauh lebih efisien daripada mencari dan menghapus elemen satu per satu secara manual. Method removeWhere() mengubah list asli secara langsung, sehingga menjadi alat yang ampuh untuk membersihkan list berdasarkan kondisi apa pun yang bisa kamu nyatakan sebagai pengujian boolean.
Tantangan
MudahBuat program yang mengelola sistem penyaringan nilai siswa dengan menghapus siswa yang tidak lulus dari daftar siswa di kelas. Programmu harus:
- Membaca input string yang mewakili nama kelas
- Membaca beberapa input bilangan bulat yang mewakili nilai siswa (input akan berakhir saat kamu menerima
-1) - Menggunakan method
removeWhere()untuk menghapus semua nilai yang di bawah 60 (nilai tidak lulus) - Mencetak hasil penyaringan nilai dengan format persis seperti yang ditunjukkan di bawah ini
Misalnya, jika nama kelasnya adalah "Mathematics 101" dan nilainya adalah 85, 45, 92, 38, 76, 55, 88, programmu harus menghasilkan output:
Class: Mathematics 101
Original scores: [85, 45, 92, 38, 76, 55, 88]
Removed failing scores (below 60)
Passing scores: [85, 92, 76, 88]
Students passed: 4
Students failed: 3Jika nama kelasnya adalah "History 201" dan semua nilainya lulus: 75, 82, 91, programmu harus menghasilkan output:
Class: History 201
Original scores: [75, 82, 91]
Removed failing scores (below 60)
Passing scores: [75, 82, 91]
Students passed: 3
Students failed: 0Jika nama kelasnya adalah "Chemistry 301" dan semua nilainya tidak lulus: 45, 32, 58, programmu harus menghasilkan output:
Class: Chemistry 301
Original scores: [45, 32, 58]
Removed failing scores (below 60)
Passing scores: []
Students passed: 0
Students failed: 3Programmu harus menggunakan method removeWhere() dengan fungsi pengujian yang mengembalikan true untuk nilai di bawah 60. Method tersebut harus mengubah list asli dengan menghapus semua nilai yang tidak lulus, sehingga hanya menyisakan nilai yang lulus.
Coba sendiri
import 'dart:io';
void main() {
// Baca nama class
String? className = stdin.readLineSync();
// Baca nilai hingga menemukan -1
List<int> scores = [];
while (true) {
int score = int.parse(stdin.readLineSync()!);
if (score == -1) {
break;
}
scores.add(score);
}
// Simpan nilai asli untuk ditampilkan
List<int> originalScores = List.from(scores);
// TODO: Tulis kodemu di bawah ini
// Gunakan method removeWhere() untuk menghapus nilai di bawah 60
// Tampilkan hasilnya
print('Class: $className');
print('Original scores: $originalScores');
print('Removed failing scores (below 60)');
print('Passing scores: $scores');
print('Students passed: ${scores.length}');
print('Students failed: ${originalScores.length - scores.length}');
}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