
Sebagai seorang pengembang, saya suka kode terutama dalam JavaScript. Sesuai pengalaman saya, menggunakan fungsi pengurangan adalah salah satu tugas terberat di JS. Biarkan saya menguraikan konsep Mengurangi!
Di Wikipedia, ia memiliki banyak nama yaitu.
Kurangi
Lipat
Akumulasi
Agregat
Kompres
Ini adalah fungsi yang melipat daftar menjadi tipe data apa pun. Ini semua tentang memecah struktur menjadi satu nilai. Ini seperti melipat kotak! Dengan pengurangan, Anda dapat mengubah array [1,2,3,4,5] menjadi angka 15 dengan menambahkan semuanya.
Bagaimana itu dilakukan di masa lalu?Misalkan Anda mungkin memerlukan lingkaran untuk melipat daftar menjadi angka, Anda dapat melakukannya seperti ini:
const add = (x, y) => x + y; const numbers = [1, 2, 3, 4, 5]; let total = 0; for (let i = 0; i < numbers.length; i++) { total = add(total, numbers[i]); } console.log(total);
Namun, menggunakan perkecil fungsi, Anda hanya perlu satu loop untuk menangani bersama dengan "tambah fungsi". Kode akan seperti:
const add = (x, y) => x + y; const numbers = [1, 2, 3, 4, 5]; numbers.reduce(add);
Lihat, beginilah cara membuatnya menjadi mudah dikodekan!
Untuk saat ini, perhatikan JavaScript yang tidak dapat menggunakan loop, rekursi, atau metode array seperti forEach, beberapa, cari, dll. Jadi, hanya tiga yang tersisa yang dipetakan, filter dan kurangi. Namun, pekerjaan kami sebagai programmer tidak berubah. Kami masih membutuhkan tiga jenis fungsi di aplikasi kami.
-> Daftar pemfilteran
-> Mengubah daftar
-> Mengubah daftar menjadi tipe data yaitu. string, boolean, angka, objek
Tantangan di atas dapat dengan mudah ditangani dengan filter alat, memetakan dan mengurangi.
Array.filter menilai daftar juriApa yang terjadi jika Anda ingin daftar baru dengan beberapa item dihapus, seperti ketika pengguna mencari daftar kontak Anda? Karenanya, cukup buat fungsi yang mengembalikan benar atau salah berdasarkan inputnya (predikat).
const isEven = (x) => x % 2 === 0;
Sekarang, tancapkan ke filter untuk menerapkannya pada seluruh daftar.
const numbers = [1, 2, 3, 4, 5]; numbers.filter(isEven);
Array.map mengubah daftarKonversi daftar ke daftar lain adalah pengembangan Front-End secara singkat. Karena itu, peta tersebut mencakup sebagian besar pekerjaan daftar Anda.
Katakanlah aplikasi kita memanggil API untuk daftar pengguna, dan kita perlu menunjukkan nama masing-masing pengguna di layar. Cukup buat fungsi yang mengembalikan nama pengguna.
const getUserName = (user) => user.name;
Sekarang, tancapkan ke peta untuk menjalankannya terhadap seluruh daftar pengguna.
users.map(getUserName)
Array.reduce dapat melakukannya untuk AndaArray.reduce menggunakan dua parameter
1) Nilai awal (yang opsional)
Jika Anda tidak memberikan nilai awal maka kurangi default fungsi ke elemen pertama daftar.
Untuk menjumlahkan angka biasa, Anda akan menulis:
[1, 2, 3].reduce((total, current) => total + current);/source> In case, you give an initial value of zero, you will use this code: <source lang="markdown"> [{ age: 1 }, { age: 2 }, { age: 3 }] .reduce((total, obj) => total + obj.age, 0);
2) Peredam
Ketika mengurangi loop di atas daftar, itu memberi di bawah dua parameter ke peredam:
-> Nilai sekarang: Nilai saat ini cukup jelas, sama seperti ketika Anda menggunakan matriks [i] dalam loop reguler. Namun, akumulator adalah istilah komputer yang terdengar menakutkan dan sebenarnya sederhana.
-> Akumulator: Saat Anda menjelajah pengguna, bagaimana Anda melacak usia total mereka? Anda perlu beberapa variabel counter untuk menyimpannya. Itu akumulator. Ini adalah nilai akhir yang akan dikurangi ketika selesai.
Pada setiap langkah siklus, ia memberi makan akumulator terakhir dan elemen saat ini ke peredamnya. Apa yang dikembalikan peredam menjadi akumulator berikutnya. Siklus berakhir ketika daftar berakhir dan memiliki satu nilai yang dikurangi.
Jika Anda merasa fungsi peta dan filter tidak cukup, Anda dapat menjalankan gim dengan mengurangi. Itu dapat melakukan semua yang dilakukan oleh map dan filter dan semua hal lain yang melibatkan loop pada array.
Mari kita ambil contoh bantuan untuk menghitung usia pengguna. Pertimbangkan usia pengguna adalah 29,30, 31 dan 32.
const users = [ { name: 'Mariam', age: 29 }, { name: 'Kenstar', age: 30 }, { name: 'Saransh', age: 31 }, { name: 'Geoffie', age: 32 }, ];
Di sisi lain, peta dan filter hanya dapat mengembalikan array, tetapi kami membutuhkan nomor!
users.map(?); users.filter(?);
Jika kami memiliki loop kami hanya akan melewati pengguna dan menghitung usia mereka di penghitung! Namun, bisa lebih mudah untuk mengurangi fungsinya.
users.reduce((total, currentUser) => total + currentUser.age, 0);
Sekarang, menggunakan console.log di setiap langkah bisa menjadi cara termudah untuk menangani di atas.
const users = [ { name: 'Mariam', age: 29 }, { name: 'Kenstar', age: 30 }, { name: 'Saransh', age: 31 }, { name: 'Geoffie', age: 32 }, ]; const reducer = (total, currentUser) => { console.log('current total:', total); console.log('currentUser:', currentUser); // just for spacing console.log('\n'); return total + currentUser.age; } users.reduce(reducer, 0);
Ringkas seluruh kode dalam 6 langkah di sini:
-> Pertama, tentukan fungsi pengurangan dan 3 parameternya.
-> Dengan memberikan nilai awal, inisialisasi akumulator. Itu akan mengubah setiap loop.
-> Sekarang, mulai mengulangi array yang diberikan.
-> Tangkap item Current dari array untuk siklus itu.
-> Saatnya untuk memanggil peredam dengan akumulator & currentItem dan menyimpannya sebagai akumulator baru
-> Terakhir, akumulator selesai berubah ketika loop selesai dan mengembalikannya.