Игрушечный пример шаблона, который я пытаюсь решить элегантно. В приведенном ниже алгоритме я хотел бы сразу вернуть 0 из сокращения, когда я нахожу элемент со значением 0, не посещая остальные элементы.
let factors = [2,3,6,0,9,4,4,4];
function product(arr) {
return arr.reduce((acc, elem) => (acc * elem), 1);
}
Есть ли способ вырваться из итерации сокращения?
Вы можете сократить короткое замыкание, изменив исходный массив.
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))