2017-06-05 3 views
1

パターンのおもちゃの例エレガントに解決しようとしています。以下のアルゴリズムでは、残りの要素を参照せずに0の値を持つ要素を見つけたら、すぐにreduceから0を返したいと思います。ショート回路Array.reduce in Javascript

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

削減の繰り返しから抜け出す方法はありますか?

+0

あなたが特定の要件を持っている場合は、カスタム関数を減らす書きます。 – VivekN

+0

reduce関数は一般的に配列全体を繰り返し処理します。 – VivekN

+0

break to end reduceを使用する – Rick

答えて

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