Bagaimana Cara Menerapkan Fungsi Utilitas JavaScript Menggunakan Reduce?



Ketika datang ke kode dalam JavaScript, pengembang menemukan mengurangi fungsi sebagai salah satu konsep yang paling sulit untuk dipecahkan. Menurut Wikipedia, Reduce memiliki beberapa nama yaitu. Akumulasi, Lipat, Kompres, dan Agregat. Nama-nama ini dengan jelas menunjukkan arti & fungsi pengurangan fungsi. Gagasan di balik ini adalah memecah struktur menjadi nilai tunggal. Oleh karena itu, Mengurangi dapat didefinisikan sebagai fungsi yang mengubah daftar menjadi tipe data apa pun.

Misalnya, Anda dapat mengurangi array [5,4,3,2,1] menjadi nilai 15 dengan hanya menambahkannya.

Fungsi Reduce menjauhkan pengembang dari menggunakan loop untuk melipat daftar menjadi satu nilai.

Di blog ini, Anda akan mempelajari cara menerapkan fungsi terkenal menggunakan pengurangan seperti yang sudah dilakukan oleh pengembang di perusahaan pengembang perangkat lunak teratas .

Saya telah mendaftarkan 10 fungsi utilitas JavaScript yang dibuat menggunakan fungsi pengurangan. Jadi, periksa fungsi-fungsi berikut: -

  • Peta


Parameter yang digunakan


array (untuk mengubah daftar item), mentransformasikan Fungsi (adalah fungsi yang digunakan untuk berjalan pada setiap elemen)

Bekerja


Dengan menggunakan transformFunction yang diberikan, setiap elemen dalam array yang diberikan ditransformasi dan mengembalikan array item baru.

Bagaimana cara mengimplementasikannya?


const map = (transformFunction, array1) => array1.reduce((newArray1, xyz) => { newArray1.push(transformFunction(xyz)); return newArray1; }, [] ); 

Gunakan kasus:


 const double = (x) => x * 2; const reverseString = (string) => string .split('') .reverse() .join(''); map(double, [200, 300, 400]); Output: [400, 600, 800] map(reverseString, ['Hello Alka', 'I love cooking']); // ['alkA olleH', 'gnikooc evol I'] 

  • Tolak


Parameter yang digunakan


array (daftar item / nilai untuk disaring), predikat (fungsi mengembalikan nilai benar atau salah)

Bekerja

Tolak memiliki perilaku berlawanan untuk memfilter tetapi sama seperti itu. Jika predikat mengembalikan nilai palsu maka hanya item yang akan ditambahkan ke array baru. Jika tidak, item tersebut akan dikeluarkan dari array baru.

Bagaimana cara mengimplementasikannya?


 const reject = (predicate, arr3) => arr3.reduce((newArray, val3) => { if (predicate(val3) === false) { newArray.push(val3); } return newArray; }, [] ); 

Gunakan kasus:


 const isEven = (z) => z % 2 === 0; reject(isEven, [1, 6, 4, 3]); // [1, 3] reject(equals4, [4, 2, 4, 3]); // [2, 3] 

  • Pindai


Parameter yang digunakan


array (daftar item), peredam (adalah fungsi yang menerima dua parameter yaitu akumulator & elemen saat ini dari daftar array)

Bekerja


Kerjanya mirip dengan mengurangi tetapi alih-alih mengembalikan nilai tunggal sebagai hasilnya, ia mengembalikan daftar setiap nilai yang dikurangi sesuai dengan output tunggal.

Bagaimana cara mengimplementasikannya?


 const scan = (reducer, initialVal, array) => { const reducedValues = []; array.reduce((acc, currentval) => { const newAcc = reducer(acc, currentval); reducedValues.push(newAcc); return newAcc; }, initialVal); return reducedValues; }; 

Gunakan kasus:


 const add = (y, z) => y + z; const multiply = (y, z) => y * z; scan(add, 0, [1, 2, 3, 4]); // [1, 3, 6, 10] scan(multiply, 1, [1, 2, 3, 4]); // [1, 2, 6, 24] 

  • Saring


Parameter yang digunakan


array (untuk memfilter daftar item), predikat (adalah fungsi untuk mengembalikan nilai false atau true)

Bekerja


Di sini, Anda akan mendapatkan array baru sebagai output. Jika fungsi predikat mengembalikan nilai sebenarnya maka item akan ditambahkan ke array baru. Namun, jika ia mengembalikan false maka item tersebut akan dikeluarkan dari array baru.

Bagaimana cara mengimplementasikannya?


 const filter = (predicate, arr1) => arr1.reduce((newArray, val) => { if (predicate(val) === true) { newArray.push(val); } return newArray; }, [ ] ); 

Gunakan kasus:


 const isEven = (y) => y % 2 === 0; filter(isEven, [3, 2, 5]); // [2] filter(equals3, [7, 1, 3, 6, 3]); // [3, 3] 

  • Tidak ada


Parameter yang digunakan


array (daftar item untuk diuji), predikat (berfungsi untuk mengembalikan nilai benar atau salah)

Bekerja


Di sini, tidak ada yang mengembalikan nilai benar jika predikat mengembalikan nilai palsu untuk setiap item. Jika tidak, akan mengembalikan nilai palsu untuk setiap nilai predikat sebenarnya.

Bagaimana cara mengimplementasikannya?


 const none = (predicate, array) => array.reduce((acc1, val1) => !acc1 && !predicate(val1), false); 

Gunakan kasus:


 const isEven2 = (x) => x % 2 === 0; none(isEven2, [1, 3, 5]); // true none(isEven2, [1, 3, 4]); // false none(sequl3, [1, 2, 4]); // true none(sequl3, [1, 2, 3]); // false 

  • Partisi


Parameter yang digunakan


array (berisi daftar item), predikat (fungsi yang mengembalikan nilai false atau true)

Bekerja


Ini mendefinisikan pemisahan array menjadi dua berdasarkan nilai predikat. Jika predikat mengembalikan nilai sebenarnya maka item tersebut akan masuk ke list1. Lain, itu akan masuk ke daftar2. Metode untuk membagi array menjadi berbagai potongan telah digunakan oleh programmer modern yang terkait dengan perusahaan pengembangan perangkat lunak teratas. Mari kita lihat langkah-langkah selanjutnya:

Bagaimana cara mengimplementasikannya?


 const partition = (predicate, array) => array.reduce( (result3, item) => { const [list1, list2] = result; if (predicate(item) === true) { list1.push(item); } else { list2.push(item); } return result3; }, [ [], [] ] ); 

Gunakan kasus:


 const isEven = (z) => z % 2 === 0; partition(isEven, [1, 2, 3]); // [[2], [1, 3]] partition(isEven, [1, 3, 5]); // [[], [1, 3, 5]] partition(equals3, [1, 2, 3, 4, 3]); // [[3, 3], [1, 2, 4]] partition(equals3, [1, 2, 4]); // [[], [1, 2, 4]] 

  • Semua


Parameter yang digunakan


array (untuk menguji daftar item), predikat (adalah fungsi untuk mengembalikan nilai benar atau salah)

Bekerja


Pada memberikan nilai input, jika predikat mengembalikan nilai true maka semua akan mengembalikan nilai true. Jika tidak, itu akan mengembalikan nilai yang salah.

Bagaimana cara mengimplementasikannya?


 const all = (predicate, array) => array.reduce((arr, val) => arr && predicate(val), true); 

Gunakan kasus:


 const sequl3 = (x) => x === 3; all(sequl3, [3]); // true all(sequl3, [3, 3, 3]); // true all(sequl3, [1, 2, 3]); // false all(sequl3, [3, 2, 3]; // false 

  • Beberapa


Parameter yang digunakan


array (untuk menguji daftar item), predikat (adalah fungsi untuk mengembalikan nilai benar atau salah)

Bekerja


Untuk nilai input apa pun, jika predikat mengembalikan true, maka beberapa akan mengembalikan true. Jika tidak, itu akan mengembalikan nilai yang salah.

Bagaimana cara mengimplementasikannya?


Mari kita ambil contoh untuk itu:

 const some = (predicate, array) => array.reduce((arc, val) => arc || predicate(val), false); 

Gunakan kasus:


 const aqua3 = (x) => x === 3; some(aqua3, [3]); // it is true some(aqua3, [3, 3, 3]); // it is true some(aqua3, [1, 2, 3]); // it is true some(aqua3, [2]); // it is false 

  • Memetik


Parameter yang digunakan


array (untuk menyimpan nilai item), kunci (untuk memetik nama kunci dari objek)

Bekerja


Itu dapat memetik kunci yang diberikan dari setiap item dalam array dan selanjutnya mengembalikan array baru dari nilai masing-masing.

Bagaimana cara mengimplementasikannya?


 const pluck = (key3, array) => array.reduce((values3, current) => { values.push(current[key3]); return values3; }, [] ); 

Gunakan kasus:


 pluck('name', [{ name: 'Soman' }, { name: 'Rovin' }, { name: 'Jojo' }]); // ['Soman', 'Rovin', 'Jojo'] pluck(0, [[1, 2, 3], [4, 5, 6], [7, 8, 9]]); // [1, 4, 7] 

  • Temukan


Parameter yang digunakan


array (untuk mencari item dalam daftar array), predikat (fungsi yang mengembalikan nilai false atau true)

Bekerja


Ini akan mengembalikan elemen pertama yang cocok dengan predikat yang diberikan dan jika tidak ada kecocokan yang ditemukan, maka undefined dikembalikan.

Bagaimana cara mengimplementasikannya?


 const find = (predicate, array) => array.reduce((output, item) => { if (output !== undefined) { return output; } if (predicate(item) === true) { return item; } return undefined; }, undefined); 

Gunakan kasus:


 const isEven = (a) => a % 2 === 0; find(isEven, []); // undefined find(isEven, [1, 2, 5]); // 2 find(isEven, [5, 3, 7]); // undefined find(equals3, [5, 2, 3, 4, 3]); // 3 find(equals3, [7, 2, 4]); // undefined 

Catatan Akhir:


Ini adalah bagaimana Anda dapat mengimplementasikan fungsi utilitas JavaScript menggunakan pengurangan dalam waktu yang lebih singkat. Ini pasti akan membantu pengembang perangkat lunak dalam menghemat waktu serta upaya pengkodean mereka. Jika Anda membutuhkan dukungan yang sempurna untuk permintaan kode Anda, Anda dapat menghubungi perusahaan pengembang perangkat lunak ahli untuk kebutuhan proyek Anda.

Source: https://habr.com/ru/post/id476830/


All Articles