Multi-instrumentul lovește din nou.

În ultimul meu articol Ți-am oferit o provocare pentru a recrea funcții bine-cunoscute folosind reduce. Acest articol vă va arăta cum pot fi implementate unele dintre ele, împreună cu câteva figuranțe!

În total, vom analiza zece funcții de utilitate. Sunt incredibil de la îndemână în proiectele dvs. și, cel mai bine, sunt implementate folosind reduce! Am inspirat mult din Biblioteca RamdaJS pentru aceasta, deci verificați asta!

1. unele

Parametrii

  1. predicate – Funcția care revine true sau false.
  2. array – Lista articolelor de testat.

Descriere

Dacă predicate se intoarce true pentru orice articol, some se intoarce true. Altfel se întoarce false.

Implementare

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

Utilizare

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. toate

Parametrii

  1. predicate – Funcția care revine true sau false.
  2. array – Lista articolelor de testat.

Descriere

Dacă predicate se intoarce true pentru fiecare articol, all se intoarce true. Altfel se întoarce false.

Implementare

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

Utilizare

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. nici unul

Parametrii

  1. predicate – Funcția care revine true sau false.
  2. array – Lista articolelor de testat.

Descriere

Dacă predicate se intoarce false pentru fiecare articol, none se intoarce true. Altfel se întoarce false.

Implementare

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

Utilizare

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. hartă

Parametrii

  1. transformFunction – Funcție pentru a rula pe fiecare element.
  2. array – Lista articolelor de transformat.

Descriere

Returnează o nouă matrice de articole, fiecare transformat în funcție de cele date transformFunction.

Implementare

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

    return newArray;
  }, []);

Utilizare

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. filtru

Parametrii

  1. predicate – Funcția care revine true sau false.
  2. array – Lista elementelor de filtrat.

Descriere

Returnează o nouă matrice. Dacă predicate se intoarce true, acel element este adăugat la noua matrice. În caz contrar, acel element este exclus din noua matrice.

Implementare

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

    return newArray;
  }, []);

Utilizare

const isEven = (x) => x % 2 === 0;

filter(isEven, [1, 2, 3]);
// [2]

filter(equals3, [1, 2, 3, 4, 3]);
// [3, 3]

6. respinge

Parametrii

  1. predicate – Funcția care revine true sau false.
  2. array – Lista elementelor de filtrat.

Descriere

La fel ca filter, dar cu comportamentul opus.

Dacă predicate se intoarce false, acel element este adăugat la noua matrice. În caz contrar, acel element este exclus din noua matrice.

Implementare

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

    return newArray;
  }, []);

Utilizare

const isEven = (x) => x % 2 === 0;

reject(isEven, [1, 2, 3]);
// [1, 3]

reject(equals3, [1, 2, 3, 4, 3]);
// [1, 2, 4]

7. găsi

Parametrii

  1. predicate – Funcția care revine true sau false.
  2. array – Lista articolelor de căutat.

Descriere

Returnează primul element care se potrivește cu cel dat predicate. Dacă niciun element nu se potrivește atunci undefined este returnat.

Implementare

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

    if (predicate(item) === true) {
      return item;
    }

    return undefined;
  }, undefined);

Utilizare

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. partiție

Parametrii

  1. predicate – Funcția care revine true sau false.
  2. array – Listă de obiecte.

Descriere

“Partiții” sau împarte o matrice în două pe baza fișierului predicate. Dacă predicate se intoarce true, elementul intră în lista 1. În caz contrar, elementul intră în lista 2.

Implementare

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;
    },
    [[], []]
  );

Utilizare

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. smulge

Parametrii

  1. key – Numele cheii de smuls din obiect
  2. array – Listă de obiecte.

Descriere

Ridică ceea ce este dat key de pe fiecare element din matrice. Returnează o nouă matrice a acestor valori.

Implementare

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

    return values;
  }, []);

Utilizare

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. scanare

Parametrii

  1. reducer – Funcție reductor standard care primește doi parametri – acumulatorul și elementul curent din matrice.
  2. initialValue – Valoarea inițială pentru acumulator.
  3. array – Listă de obiecte.

Descriere

Funcționează exact ca reduce dar în schimb doar rezultatul unic, returnează o listă cu fiecare valoare redusă pe drumul către rezultatul unic.

Implementare

const scan = (reducer, initialValue, array) => {
  const reducedValues = [];

  array.reduce((acc, current) => {
    const newAcc = reducer(acc, current);

    reducedValues.push(newAcc);

    return newAcc;
  }, initialValue);

  return reducedValues;
};

Utilizare

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

Vrei antrenament gratuit?

Dacă doriți să programați un apel gratuit pentru a discuta întrebări de dezvoltare Front-End cu privire la cod, interviuri, carieră sau orice altceva urmărește-mă pe Twitter și dă-mi drumul.

După aceea, dacă vă bucurați de prima noastră întâlnire, putem discuta despre un coaching continuu pentru a vă ajuta să vă atingeți obiectivele de dezvoltare Front-End!

Mulțumesc pentru lectură

Pentru mai mult conținut de acest gen, verificați https://yazeedb.com!

Pana data viitoare!