【发布时间】:2017-11-06 17:08:27
【问题描述】:
我试图优雅地解决一个模式的玩具示例。在下面的算法中,当我找到一个值为 0 的元素而不访问其余元素时,我想立即从 reduce 中返回 0。
let factors = [2,3,6,0,9,4,4,4];
function product(arr) {
return arr.reduce((acc, elem) => (acc * elem), 1);
}
有什么方法可以摆脱reduce迭代吗?
【问题讨论】:
-
如果您有特定要求,请编写您的自定义 reduce 函数。
-
reduce 函数一般会遍历整个数组。
-
使用break结束reduce
-
为什么不只是
return ~arr.indexOf(0) ? 0 : arr.reduce(/* ... */); -
@scniro,谢谢,抱歉,我没看到这个问题。
标签: javascript functional-programming short-circuiting