Ich versuche, Javascript reduzieren mit einer rekursiven Funktion zu reduzieren. Hier ist mein Versuch, der nicht funktioniert. Wenn jemand es nur leicht ändern kann, damit es funktioniert, wäre das großartig, weil ich es besser verstehen würde. (Dies ist eine Übung in functional-javascript-workshop).Warum ist diese rekursive Definition von reduce working (JS) nicht?
function reduce(arr, fn, initial) {
if (arr.length) {
var newArr = arr.slice(1, arr.length);
return reduce(newArr, fn, fn(arr[0]));
} else {
return initial;
}
}
module.exports = reduce
Es gibt mir die folgende kryptische Fehlermeldung, die ich weiß nicht, wie zu interpretieren:
/usr/local/lib/node_modules/functional-javascript-workshop/exercises/basic_recursion/exercise.js:13
prev[curr] = ++prev[curr] || 1
^
TypeError: Cannot create property 'undefined' on string 'exercitation'
at /usr/local/lib/node_modules/functional-javascript-workshop/exercises/basic_recursion/exercise.js:13:29
at reduce (/home/david/node-school/functional-workshop/solution.js:7:28)
at /usr/local/lib/node_modules/functional-javascript-workshop/exercises/basic_recursion/exercise.js:12:10
at obtainResult (/usr/local/lib/node_modules/functional-javascript-workshop/exercises/runner.js:100:21)
at Exercise.<anonymous> (/usr/local/lib/node_modules/functional-javascript-workshop/exercises/runner.js:66:27)
at next (/usr/local/lib/node_modules/functional-javascript-workshop/node_modules/workshopper-exercise/exercise.js:188:19)
at /usr/local/lib/node_modules/functional-javascript-workshop/node_modules/workshopper-exercise/exercise.js:195:7
at Exercise.<anonymous> (/usr/local/lib/node_modules/functional-javascript-workshop/exercises/runner.js:34:5)
at next (/usr/local/lib/node_modules/functional-javascript-workshop/node_modules/workshopper-exercise/exercise.js:188:19)
at /usr/local/lib/node_modules/functional-javascript-workshop/node_modules/workshopper-exercise/exercise.js:195:7
Ich frage mich nur: funktioniert 'if (arr.length)'? Ich benutze immer 'if (arr.length> 0)' ... – Danmoreng
Sie zeigen uns nicht den richtigen Code. Der Fehler tritt in "exercise.js" auf, nachdem er in Zeile 7 in "solution.js" aufgerufen wurde. –
@Danmoreng, testet den Truthy-Wert –