在Javascript中短路Array.reduce

时间:2017-06-05 20:30:13

标签: javascript functional-programming short-circuiting

我试图优雅地解决的模式的玩具示例。在下面的算法中,当我找到一个值为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迭代?

1 个答案:

答案 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))