¿Cómo implementar las funciones de la utilidad de JavaScript usando Reducir?



Cuando se trata de código en JavaScript, los desarrolladores encontraron que reducir la función es uno de los conceptos más difíciles de descifrar. Según Wikipedia, Reduce tiene varios nombres, a saber. Acumular, doblar, comprimir y agregar. Estos nombres indican claramente el significado y el funcionamiento de la función reducir. La idea detrás de esto es dividir una estructura en un solo valor. Por lo tanto, Reducir se puede definir como una función que convierte una lista en cualquier tipo de datos.

Por ejemplo, puede reducir una matriz [5,4,3,2,1] en el valor 15 con solo agregarlos.

La función Reducir evita que los desarrolladores usen el bucle para plegar una lista en un solo valor.

En este blog, aprenderá formas de implementar funciones bien conocidas utilizando reduce como ya lo han hecho los desarrolladores en la principal empresa de desarrollo de software .

He enumerado 10 funciones de utilidad de JavaScript recreadas usando la función reducir. Entonces, mira a continuación estas funciones: -

  • Mapa


Parámetros utilizados


matriz (para transformar la lista de elementos), transformar la función (es una función utilizada para ejecutarse en cada elemento)

Trabajando


Al usar transformFunction, cada elemento de la matriz dada se transforma y devuelve una nueva matriz de elementos.

¿Cómo 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'] 

  • Rechazar


Parámetros utilizados


matriz (lista de elementos / valores para filtrar), predicado (función que devuelve valor verdadero o falso)

Trabajando

Rechazar tiene un comportamiento opuesto para filtrar pero igual así. Si el predicado devuelve un valor falso, solo el elemento se agregará a la nueva matriz. De lo contrario, el artículo se excluirá de la nueva matriz.

¿Cómo 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] 

  • Escanear


Parámetros utilizados


matriz (lista de elementos), reductor (es una función que recibe dos parámetros, es decir, acumulador y elemento actual de la lista de matriz)

Trabajando


Su funcionamiento es similar a la reducción, pero en lugar de devolver el valor único como resultado, devuelve una lista de cada valor reducido correspondiente a la salida única.

¿Cómo 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 la lista de elementos), predicado (es una función para devolver valor falso o verdadero)

Trabajando


Aquí, obtendrá una nueva matriz como salida. Si la función de predicado devuelve un valor verdadero, el elemento se agregará a la nueva matriz. Sin embargo, si devuelve falso, el elemento se excluirá de la nueva matriz.

¿Cómo 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] 

  • Ninguno


Parámetros utilizados


matriz (enumerar elementos para probar), predicado (función para devolver el valor verdadero o falso)

Trabajando


Aquí, ninguno devuelve un valor verdadero si el predicado devuelve un valor falso para cada elemento. De lo contrario, devolverá un valor falso para cada valor verdadero de predicado.

¿Cómo 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 

  • Partición


Parámetros utilizados


matriz (contiene una lista de elementos), predicado (función que devuelve valor falso o verdadero)

Trabajando


Define la división de una matriz en dos según el valor del predicado. Si el predicado devuelve un valor verdadero, el elemento irá a la lista1. De lo contrario, irá a la lista2. Los programadores de hoy en día que están asociados con las principales empresas de desarrollo de software han utilizado el método para dividir la matriz en varios fragmentos. Echemos un vistazo a los siguientes pasos:

¿Cómo 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 probar la lista de los elementos), predicado (es una función para devolver el valor verdadero o falso)

Trabajando


Al proporcionar un valor de entrada, si el predicado devuelve el valor verdadero, entonces todos devolverán el valor verdadero. De lo contrario, devolverá un valor falso.

¿Cómo 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 

  • Algunos


Parámetros utilizados


matriz (para probar la lista de elementos), predicado (es una función para devolver el valor verdadero o falso)

Trabajando


Para cualquier valor de entrada, si el predicado devuelve verdadero, algunos devolverán verdadero. De lo contrario, devolverá un valor falso.

¿Cómo implementar?


Tomemos un ejemplo para ello:

 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 almacenar el valor de los elementos), clave (para extraer el nombre de la clave del objeto)

Trabajando


Puede extraer la clave dada de cada elemento de la matriz y además devuelve una nueva matriz de los valores respectivos.

¿Cómo 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] 

  • Encontrar


Parámetros utilizados


matriz (para buscar elementos en la lista de matriz), predicado (función que devuelve un valor verdadero o falso)

Trabajando


Devolverá el primer elemento que coincida con el predicado dado y, en caso de que no se encuentre ninguna coincidencia, se devolverá undefined.

¿Cómo 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:


Así es como puede implementar las funciones de la utilidad JavaScript utilizando reducir en menos tiempo. Esto definitivamente ayudará a los desarrolladores de software a ahorrar tiempo, así como a sus esfuerzos de codificación. En caso de que necesite un soporte perfecto para sus consultas de codificación, puede contactar a una compañía experta en desarrollo de software para las necesidades de su proyecto.

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


All Articles