我试图优雅地解决的模式的玩具示例。在下面的算法中,当我找到一个值为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迭代?
答案 0 :(得分:0)
您可以通过改变原始阵列来缩短短路。
let factors = [2, 3, 6, 0, 9, 4, 4, 4];
function product(arr) {
return arr.reduce((acc, elem, i, array) => (array[i] === 0 ? (arr.length = i, elem) : (acc * elem)), 1);
}
console.log(product(factors))