2017-06-05 12 views
1

Un exemple de jouet que j'essaie de résoudre avec élégance. Dans l'algorithme ci-dessous, je voudrais retourner immédiatement 0 de réduire quand je trouve un élément avec une valeur de 0 sans visiter les éléments restants.court-circuit Array.reduce en Javascript

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

Existe-t-il un moyen de sortir de l'itération réduite?

+0

écrire votre fonction Réduir si vous avez des exigences spécifiques. – VivekN

+0

La fonction de réduction en général parcourrait tout le tableau. – VivekN

+0

Utilisez pause pour terminer réduire – Rick

Répondre

-1

Vous pouvez court-circuiter en réduisant la matrice d'origine.

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