¿Cómo deshacer una función hasta la profundidad n en JavaScript?

El siguiente enfoque cubre cómo deshacer una función hasta la profundidad n en JavaScript. Deshacer una función es un proceso de envolver los argumentos de la función y pasar todos los argumentos a la vez. Uncurry hasta profundidad n significa que hemos pasado solo n argumentos en todos los argumentos. 

Esto se puede hacer mediante los siguientes métodos:

  • Usando el método reduce()
  • Usando el método de bucle for-of

Uso del método reduce(): el método Reduce se usa para aplicar una operación en todos los elementos de la lista y devuelve el resultado. Se necesita una devolución de llamada que se aplica a todos los elementos. Para cortar argumentos hasta n usamos el método slice(). El método slice() extrae parte de los elementos de la lista. El slice() toma el índice inicial y el índice final hasta lo que queremos extraer. El índice inicial es 0 de forma predeterminada si no proporciona ningún argumento. Índice final que podemos proporcionar hasta el final de la lista.

Ejemplo: 

Javascript

<script>
// Uncurry that unwrap function
let uncurry = (f, n) => (...args) => {
 
    // Function that apply function to all elements
    let func = f => a => a.reduce((l, m) => l(m), f)
 
    // If args are less than n return
    if (n > args.length)
        return " less args provide ";
 
    // Apply function up t n
    return func(f)(args.slice(0, n));
}
 
let n = 3;
// Function sum three values
const sum = x => y => z => x + y + z;
let t = uncurry(sum, n);
let ans = t(1, 2, 4, 5);
 
console.log(`Sum of ${n} args are ${ans}`);
</script>

Producción:

Sum of 3 args are 7

Usando el método de bucle or-of: en este método, usamos el bucle for-of . El bucle for-of se utiliza para iterar sobre todos los elementos de la lista. A continuación se muestra la implementación del método:

  • Defina n y la función de suma que suman todos los argumentos proporcionados.
  • Llame a la función uncurrry con la suma, n y toda la lista de números.
  • La función uncurry comprueba si n es mayor que los argumentos y luego devuelve menos argumentos proporcionados.
  • De lo contrario, itera el argumento general y aplica la función sum a cada argumento.
  • En for loop, contamos la iteración. Cuando la iteración se vuelve igual a n, rompe el bucle.
  • Al final devuelve f que suma de todos los elementos pasados.

Ejemplo:

Javascript

<script>
// Sum function that we have to uncurry
const sum = x => y => z => x + y + z;
 
// Function that uncurry  function up-to
// n depth  with for loop
const uncurry = f => n => {
    let k = 0;
 
    return (...args) => {
 
        if (n > args.length) {
            return "n";
        }
        for (let arg of args) {
 
            if (k === n)
                break;
            k++
            f = f(arg);
        }
        return f
    };
 
}
 
// Creating uncurry function with sum function and 3 value
let n = 3;
const uncurried = uncurry(sum)(n);
 
let ans = uncurried(0, 1, 7, 2, 4);
console.log(`Sum of ${n} args is ${ans}`);
</script>

Producción:

Sum of 3 args is 8

Publicación traducida automáticamente

Artículo escrito por satyam00so y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *