【发布时间】:2017-09-22 15:40:03
【问题描述】:
我正在尝试使用递归函数重新定义 Javascript 的 reduce。 这是我的尝试,它不起作用。如果有人可以稍微改变它以使其工作,那就太好了,因为我会更好地理解它。 (这是functional-javascript-workshop中的一个练习)。
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
它给了我以下神秘的错误消息,我不知道如何解释:
/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
【问题讨论】:
-
只是想知道:
if(arr.length)有效吗?我总是用if(arr.length > 0)... -
您没有向我们展示正确的代码。在第 7 行的
solution.js中调用后,错误发生在exercise.js中。 -
@Danmoreng,它测试真实值
-
什么是
fn?initial应该是数组中元素的index吗? -
@guest271314 fn 是用于减少数组的任何函数
标签: javascript recursion reduce