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