Array.reduce короткого замыкания в Javascript

1

Игрушечный пример шаблона, который я пытаюсь решить элегантно. В приведенном ниже алгоритме я хотел бы сразу вернуть 0 из сокращения, когда я нахожу элемент со значением 0, не посещая остальные элементы.

let factors = [2,3,6,0,9,4,4,4];
function product(arr) {
    return arr.reduce((acc, elem) => (acc * elem), 1);
}

Есть ли способ вырваться из итерации сокращения?

Теги:
functional-programming
short-circuiting

1 ответ

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню