10 JavaScript utilītas funkcijas, kas izveidotas ar samazināšanu

Daudzfunkcionālais rīks atkal iedarbojas.

Savā pēdējā rakstā es jums piedāvāju izaicinājumu atjaunot labi zināmas funkcijas, izmantojot reduce. Šis raksts parādīs, kā dažus no tiem var ieviest, kā arī dažas ekstras!

Kopumā mēs aplūkosim desmit lietderības funkcijas. Viņi ir neticami ērti jūsu projektos, un pats labākais, ka tie tiek īstenoti, izmantojot reduce! Es smēlos daudz iedvesmas no RamdaJS bibliotēkas šim, tāpēc pārbaudiet to!

1. daži

Parametri

  1. predicate- Funkcija, kas atgriež truevai false.
  2. array - Testējamo priekšmetu saraksts.

Apraksts

Ja predicateatgriežas truepar kādu vienumu, someatgriežas true. Pretējā gadījumā tas atgriežas false.

Īstenošana

const some = (predicate, array) => array.reduce((acc, value) => acc || predicate(value), false); 

Lietošana

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

2. viss

Parametri

  1. predicate- Funkcija, kas atgriež truevai false.
  2. array - Testējamo priekšmetu saraksts.

Apraksts

Ja predicateatgriežas truepar katru vienumu, allatgriežas true. Pretējā gadījumā tas atgriežas false.

Īstenošana

const all = (predicate, array) => array.reduce((acc, value) => acc && predicate(value), true); 

Lietošana

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

3. neviena

Parametri

  1. predicate- Funkcija, kas atgriež truevai false.
  2. array - Testējamo priekšmetu saraksts.

Apraksts

Ja predicateatgriežas falsepar katru vienumu, noneatgriežas true. Pretējā gadījumā tas atgriežas false.

Īstenošana

const none = (predicate, array) => array.reduce((acc, value) => !acc && !predicate(value), false); 

Lietošana

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

4. karte

Parametri

  1. transformFunction - Funkcija, lai palaistu katru elementu.
  2. array - Pārveidojamo priekšmetu saraksts.

Apraksts

Atgriež jaunu vienību masīvu, katru pārveidojot atbilstoši dotajam transformFunction.

Īstenošana

const map = (transformFunction, array) => array.reduce((newArray, item) => { newArray.push(transformFunction(item)); return newArray; }, []); 

Lietošana

const double = (x) => x * 2; const reverseString = (string) => string .split('') .reverse() .join(''); map(double, [100, 200, 300]); // [200, 400, 600] map(reverseString, ['Hello World', 'I love map']); // ['dlroW olleH', 'pam evol I'] 

5. filtrs

Parametri

  1. predicate- Funkcija, kas atgriež truevai false.
  2. array - Filtrējamo vienumu saraksts.

Apraksts

Atgriež jaunu masīvu. Ja predicateatgriežas true, šis vienums tiek pievienots jaunajam masīvam. Pretējā gadījumā šis vienums tiek izslēgts no jaunā masīva.

Īstenošana

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

Lietošana

const isEven = (x) => x % 2 === 0; filter(isEven, [1, 2, 3]); // [2] filter(equals3, [1, 2, 3, 4, 3]); // [3, 3] 

6. noraidīt

Parametri

  1. predicate- Funkcija, kas atgriež truevai false.
  2. array - Filtrējamo vienumu saraksts.

Apraksts

Tāpat kā filter, bet ar pretēju uzvedību.

Ja predicateatgriežas false, šis vienums tiek pievienots jaunajam masīvam. Pretējā gadījumā šis vienums tiek izslēgts no jaunā masīva.

Īstenošana

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

Lietošana

const isEven = (x) => x % 2 === 0; reject(isEven, [1, 2, 3]); // [1, 3] reject(equals3, [1, 2, 3, 4, 3]); // [1, 2, 4] 

7. find

Parameters

  1. predicate - Function that returns true or false.
  2. array - List of items to search.

Description

Returns the first element that matches the given predicate. If no element matches then undefined is returned.

Implementation

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

Usage

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

8. partition

Parameters

  1. predicate - Function that returns true or false.
  2. array - List of items.

Description

"Partitions" or splits an array into two based on the predicate. If predicate returns true, the item goes into list 1. Otherwise the item goes into list 2.

Implementation

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

Usage

const isEven = (x) => x % 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]] 

9. pluck

Parameters

  1. key - Key name to pluck from the object
  2. array - List of items.

Description

Plucks the given key off of each item in the array. Returns a new array of these values.

Implementation

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

Usage

pluck('name', [{ name: 'Batman' }, { name: 'Robin' }, { name: 'Joker' }]); // ['Batman', 'Robin', 'Joker'] pluck(0, [[1, 2, 3], [4, 5, 6], [7, 8, 9]]); // [1, 4, 7] 

10. scan

Parameters

  1. reducer - Standard reducer function that receives two parameters - the accumulator and current element from the array.
  2. initialValue - The initial value for the accumulator.
  3. array - List of items.

Description

Darbojas tāpat kā, reducebet tā vietā tikai viens rezultāts, tas atgriež visu samazināto vērtību sarakstu ceļā uz vienu rezultātu.

Īstenošana

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

Lietošana

const add = (x, y) => x + y; const multiply = (x, y) => x * y; scan(add, 0, [1, 2, 3, 4, 5, 6]); // [1, 3, 6, 10, 15, 21] - Every number added from 1-6 scan(multiply, 1, [1, 2, 3, 4, 5, 6]); // [1, 2, 6, 24, 120, 720] - Every number multiplied from 1-6 

Vai vēlaties bezmaksas koučingu?

Ja vēlaties ieplānot bezmaksas zvanu, lai apspriestu Front-End attīstības jautājumus par kodu, intervijām, karjeru vai jebko citu, sekojiet man Twitter un DM me.

Pēc tam, ja jums patīk mūsu pirmā tikšanās, mēs varam pārrunāt notiekošo koučingu, kas palīdzēs jums sasniegt jūsu priekšgala attīstības mērķus!

Paldies, ka lasījāt

Lai iegūtu vairāk šāda veida satura, apmeklējiet vietni //yazeedb.com!

Līdz nākamajai reizei!