Como implementar funções do utilitário JavaScript usando o Reduce?



Quando se trata de código em JavaScript, os desenvolvedores descobriram que a função de redução é um dos conceitos mais difíceis de decifrar. Segundo a Wikipedia, Reduce tem vários nomes viz. Acumule, Dobre, Comprima e Agregue. Esses nomes indicam claramente o significado e funcionamento da função de redução. A idéia por trás disso é dividir uma estrutura em um único valor. Portanto, Reduzir pode ser definido como uma função que converte uma lista em qualquer tipo de dados.

Por exemplo, você pode reduzir uma matriz [5,4,3,2,1] para o valor 15 apenas adicionando-as.

A função Reduzir evita que os desenvolvedores usem o loop para dobrar uma lista em um único valor.

Neste blog, você aprenderá maneiras de implementar funções conhecidas usando o reduzir como já feito pelos desenvolvedores na principal empresa de desenvolvimento de software .

Eu listei 10 funções utilitárias JavaScript recriadas usando a função reduzir. Portanto, confira abaixo estas funções: -

  • Mapa


Parâmetros utilizados


array (para transformar a lista de itens), transformar Function (é uma função usada para executar em cada elemento)

Trabalhando


Usando a transformFunction fornecida, cada elemento na matriz especificada é transformado e retorna uma nova matriz de itens.

Como implementar?


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

Caso de uso:


 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'] 

  • Rejeitar


Parâmetros utilizados


matriz (lista de itens / valores a serem filtrados), predicado (função retornando valor verdadeiro ou falso)

Trabalhando

Rejeitar tem um comportamento oposto ao filtro, mas é o mesmo. Se o predicado retornar um valor falso, apenas o item será adicionado à nova matriz. Senão, o item será excluído da nova matriz.

Como implementar?


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

Caso de uso:


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

  • Digitalizar


Parâmetros utilizados


array (lista de itens), redutor (é uma função que recebe dois parâmetros, isto é, acumulador e elemento atual da lista de array)

Trabalhando


Seu trabalho é semelhante a reduzir, mas em vez de retornar o valor único como resultado, ele retorna uma lista de todos os valores reduzidos correspondentes à saída única.

Como implementar?


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

Caso de uso:


 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] 

  • Filtro


Parâmetros utilizados


matriz (para filtrar a lista de itens), predicado (é uma função para retornar valor falso ou verdadeiro)

Trabalhando


Aqui, você obterá uma nova matriz como saída. Se a função predicada retornar valor verdadeiro, o item será adicionado à nova matriz. No entanto, se retornar falso, o item será excluído da nova matriz.

Como implementar?


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

Caso de uso:


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

  • Nenhuma


Parâmetros utilizados


matriz (itens de lista a serem testados), predicado (função para retornar valor verdadeiro ou falso)

Trabalhando


Aqui, nenhum retorna valor verdadeiro se o predicado retornar valor falso para cada item. Caso contrário, ele retornará um valor falso para cada valor verdadeiro do predicado.

Como implementar?


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

Caso de uso:


 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 

  • Partição


Parâmetros utilizados


matriz (contém uma lista de itens), predicado (função retornando valor falso ou verdadeiro)

Trabalhando


Ele define a divisão de uma matriz em duas com base no valor do predicado. Se o predicado retornar um valor verdadeiro, o item irá para a lista1. Senão, ele irá para a lista2. O método para dividir a matriz em vários blocos foi usado pelos programadores modernos associados às principais empresas de desenvolvimento de software. Vamos dar uma olhada nas etapas seguintes:

Como implementar?


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

Caso de uso:


 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]] 

  • Todos


Parâmetros utilizados


matriz (para testar a lista dos itens), predicado (é uma função para retornar valor verdadeiro ou falso)

Trabalhando


Ao fornecer um valor de entrada, se o predicado retornar valor true, todos retornarão valor true. Senão, ele retornará um valor falso.

Como implementar?


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

Caso de uso:


 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 

  • Alguns


Parâmetros utilizados


matriz (para testar a lista de itens), predicado (é uma função para retornar valor verdadeiro ou falso)

Trabalhando


Para qualquer valor de entrada, se o predicado retornar true, alguns retornarão true. Caso contrário, ele retornará um valor falso.

Como implementar?


Vamos dar um exemplo para isso:

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

Caso de uso:


 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 

  • Arrancar


Parâmetros utilizados


matriz (para armazenar o valor dos itens), chave (para extrair o nome da chave do objeto)

Trabalhando


Ele pode retirar a chave fornecida de cada item da matriz e retornar ainda uma nova matriz dos respectivos valores.

Como implementar?


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

Caso de uso:


 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] 

  • Localizar


Parâmetros utilizados


matriz (para pesquisar itens na lista de matriz), predicado (função que retorna valor falso ou verdadeiro)

Trabalhando


Ele retornará o primeiro elemento que corresponde ao predicado especificado e, se nenhuma correspondência for encontrada, o indefinido será retornado.

Como implementar?


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

Caso de uso:


 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 

Nota final:


É assim que você pode implementar as funções do utilitário JavaScript usando reduzir em menos tempo. Isso definitivamente ajudará os desenvolvedores de software a economizar tempo, bem como em seus esforços de codificação. Caso você precise de suporte perfeito para suas consultas de codificação, entre em contato com uma empresa especializada em desenvolvimento de software para as necessidades do seu projeto.

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


All Articles