javascript - JavaScript 问题的箭头函数 - 多个箭头函数嵌套
问题描述
我在leetcode上练习JS的时候看到了一个答案,但是我不明白这是什么意思。任何人都可以扩展代码吗?或告诉我如何阅读。
https://leetcode.com/problems/running-sum-of-1d-array/discuss/702025/one-liner
let runningSum = nums => nums.map((sum => el => sum += el)(0));
console.log(runningSum([1,2,3,4]))
解决方案
让我们尝试分解它。
(sum => el => sum += el)
, 等价于:
const mySumFunction = (sum) => {
const addToSum = (el) => {
sum += el;
return sum;
}
return addToSum;
}
这是一个接受参数的函数 - 起始总和。sum 参数也是函数范围内的局部变量。
当您调用 mySumFunction 时,它返回另一个函数,该函数添加到局部范围变量 sum 并返回到目前为止的总和。
实际上,它创建了一个“带内存的函数”,它返回到目前为止已传递给它的所有内容的总和。
您可以按如下方式进行测试:
cumilativeSum = mySumFunction(0)
console.log(v(1)) // returns 1
console.log(v(1)) // returns 2
console.log(v(4)) // returns 6
现在让我们看一下整个代码。
let runningSum = nums => nums.map((sum => el => sum += el)(0));
传递给 map 函数的整个片段:(sum => el => sum += el)(0)
创建一个从 0 开始的“内存求和函数”,正如我们在上面计算的那样。
我们将数组中的每个数字传递给它,并创建一个具有累积和的数组。
推荐阅读
- c++ - QT:具有 QVariant 的任意复杂数据结构
- c# - 如何在截屏前等待每一页?
- java - java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.lang.String java.lang.String.toString()”(帮助)
- windows - 如何在 git 中保留隐藏的 windows 文件夹?
- silverstripe - Silverstripe:全文搜索?
- r - 替换打印长输出中的嵌套 for 循环
- angular - build/auth0.js net::ERR_ABORTED 404(未找到)
- android - 为什么要将后台任务定义为挂起功能
- computational-geometry - 算法(数百万个实心随机交叉点)
- html - 如何在 flex-direction 列容器中使一些子项目 50% 宽并并排?