High order function merupakan salah satu fitur yang sangat penting di dalam bahasa pemrograman JavaScript. Fungsi ini memungkinkan Anda untuk memanipulasi fungsi sebagai argumen, mengembalikan fungsi sebagai nilai, atau bahkan membuat fungsi di dalam fungsi. Dalam artikel ini, kita akan membahas lebih lanjut tentang high order function di dalam JavaScript beserta contoh penggunaannya.
Apa itu High Order Function?
High order function adalah fungsi yang mengambil satu atau lebih fungsi sebagai argumen atau mengembalikan fungsi sebagai nilai. Dengan fitur ini, Anda dapat melakukan operasi yang lebih kompleks pada fungsi, seperti melakukan penggabungan, penyaringan, dan pemetaan. High order function juga sangat berguna untuk memperpendek kode dan meningkatkan efisiensi.
Untuk memahami konsep ini lebih jauh kita akan menggunakan map, filter, dan reduce.
Map
Fungsi map digunakan ketika kita ingin mengubah setiap elemen dari suatu array. Fungsi ini menerima sebuah fungsi sebagai parameter dengan tiga argumen yaitu "currentValue", "index", dan "arrayAsli". Kemudian, fungsi tersebut akan menghasilkan sebuah array baru dengan panjang yang sama dengan array asli namun dengan setiap elemennya telah diubah sesuai dengan logika pada fungsi yang diberikan sebagai parameter.
Dengan menggunakan fungsi "map", kita dapat dengan mudah mengubah nilai dari setiap elemen dalam sebuah array tanpa harus mengubah array aslinya secara langsung.
const names = ['eko', 'budi', 'tono'];
const greetNames = names.map( (name) => {
return 'Hai ' + name;
});
console.log(greetNames);
// Output: ['Hai eko', 'Hai budi', 'Hai tono']
{codeBox}
const greetNames' = names.map( name => 'Hai ' + name ){codeBox}
Filter
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];const evenNumbers = numbers.filter(function(number) {return number % 2 === 0;});console.log(evenNumbers);// Output: [2, 4, 6, 8, 10]{codeBox}
Reduce
const numbers = [1, 2, 3, 4, 5];const sum = numbers.reduce(function(accumulator, currentValue) {return accumulator + currentValue;}, 0);console.log(sum);// Output: 15{codeBox}
Dalam contoh di atas, fungsi "reduce" digunakan untuk menjumlahkan setiap elemen di dalam array "numbers". Fungsi arrow yang diberikan sebagai parameter akan menjumlahkan nilai dari "accumulator" dengan nilai dari "currentValue" pada setiap iterasi, dan mengembalikan hasil penjumlahan tersebut sebagai nilai "accumulator" pada iterasi selanjutnya. Parameter opsional "initialValue" diatur ke 0, sehingga "accumulator" akan dimulai dari nilai 0 saat proses penghitungan dimulai.