Mengubah dengan 'map'
Termasuk bagian Logika dan Alur dalam perjalanan Dart di Coddy. Pelajaran 10 dari 65.
Saat kamu perlu mengubah setiap elemen dalam list menjadi sesuatu yang baru, Dart menyediakan method map() yang andal. Method ini menerapkan fungsi transformasi pada setiap elemen dalam list dan menghasilkan Iterable lazy baru yang berisi hasil transformasi (panggil .toList() untuk mendapatkan list).
method map() menerima fungsi sebagai parameternya yang menentukan cara setiap elemen harus diubah. Fungsi ini menerima setiap elemen dari list asli dan mengembalikan versi yang sudah diubah. method map() kemudian mengumpulkan semua nilai yang sudah diubah ini ke dalam list baru.
List<int> numbers = [1, 2, 3, 4, 5];
// Ubah setiap angka menjadi dua kali lipat
var doubled = numbers.map((number) => number * 2);
print(doubled); // (2, 4, 6, 8, 10)Pendekatan ini jauh lebih elegan daripada membuat list baru secara manual dan menggunakan perulangan untuk mengubah setiap elemennya. Method map() mewakili konsep mendasar dalam pemrograman fungsional, sehingga kamu dapat menyatakan transformasi data dengan cara yang jelas dan ringkas.
Tantangan
MudahBuat program yang mengelola sistem penetapan harga produk dengan menerapkan penyesuaian harga berdasarkan persentase pada semua barang dalam inventaris toko. Programmu harus:
- Membaca input string yang mewakili nama toko
- Membaca beberapa input desimal yang mewakili harga asli produk (input akan berakhir saat kamu menerima
-1) - Membaca input desimal yang mewakili penyesuaian persentase (positif untuk kenaikan harga, negatif untuk diskon)
- Menggunakan method
map()untuk mengubah setiap harga dengan menerapkan penyesuaian persentase - Mencetak hasil penyesuaian harga dalam format persis seperti yang ditunjukkan di bawah
Misalnya, jika nama toko adalah "Tech Store", harganya adalah 99.99, 149.50, 79.99, 199.99, dan penyesuaiannya adalah 15.0 (kenaikan 15%), programmu harus menghasilkan:
Store: Tech Store
Original prices: [99.99, 149.5, 79.99, 199.99]
Applying 15.0% adjustment
Adjusted prices: (114.9885, 171.925, 91.9885, 229.9885)
Total items processed: 4
Status: Price adjustment completedJika nama toko adalah "Fashion Outlet", harganya adalah 29.99, 45.00, dan penyesuaiannya adalah -20.0 (diskon 20%), programmu harus menghasilkan:
Store: Fashion Outlet
Original prices: [29.99, 45.0]
Applying -20.0% adjustment
Adjusted prices: (23.992, 36.0)
Total items processed: 2
Status: Price adjustment completedJika nama toko adalah "Book Corner" dan hanya satu harga 12.50 yang diberikan dengan penyesuaian 0.0, programmu harus menghasilkan:
Store: Book Corner
Original prices: [12.5]
Applying 0.0% adjustment
Adjusted prices: (12.5)
Total items processed: 1
Status: Price adjustment completedProgrammu harus menggunakan method map() dengan fungsi transformasi yang menghitung harga baru menggunakan rumus: originalPrice * (1 + percentage / 100). Method map() harus mengembalikan iterable yang berisi semua harga yang telah disesuaikan, yang akan ditampilkan dalam format tanda kurung.
Coba sendiri
import 'dart:io';
void main() {
// Baca nama toko
String? storeName = stdin.readLineSync();
// Baca harga hingga menemukan -1
List<double> prices = [];
while (true) {
String? input = stdin.readLineSync();
double price = double.parse(input!);
if (price == -1) {
break;
}
prices.add(price);
}
// Baca persentase penyesuaian
String? adjustmentInput = stdin.readLineSync();
double adjustment = double.parse(adjustmentInput!);
// TODO: Tulis kodemu di bawah ini
// Gunakan method map() untuk menerapkan penyesuaian persentase pada semua harga
// Rumus: originalPrice * (1 + percentage / 100)
// Tampilkan hasilnya
print('Store: $storeName');
print('Original prices: $prices');
print('Applying $adjustment% adjustment');
// Cetak harga yang sudah disesuaikan dalam format tanda kurung
// Cetak jumlah item yang diproses
// Cetak pesan status
}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