我想这deepMap([4,5, [3,4,[2]]], x => x + 5)
通过这个功能:如何使用在Javascript中的参数中创建的函数?
const deepMap = (arr, fn) => {
return arr.reduce((first, second) => first.concat(Array.isArray(second) ? [deepMap(second)] : fn), []);
}
以前,它的工作是这样的:
const deepMap = (arr, fn) => {
return arr.reduce((first, second) => first.concat(Array.isArray(second) ? [deepMap(second)] : second + 5), []);
}
但是这并没有让我使用该函数的第二个参数。我知道它需要像第二个例子那样工作,但我能想到改变它的唯一方式就像在第一个例子中那样。我尝试了许多变化,但我一直在收到错误或错误的答案。
'Array.concat'期望的阵列 - '[第二+ 5]'? – jonrsharpe
在'deepMap'函数内部,作为参数传递的函数名为'fn',所以你把它叫做'fn(xyz)'。如果您希望随后对'deepMap'进行递归调用以便能够调用它,则必须将其传递:'deepMap(second,fn)'。 –
您是否收到任何错误? – Olga