2017-10-22 21 views
-1

この配列を考えてみてください:Javascript配列のスジを数える最も良い方法は何ですか?

let tab = [0,0,0,1,1,1,0,0,0,0,1,0,1,1,1,1,1] 

「1」の値を持つ最長連勝として「5」を取得するための最良の方法は何ですか?

ご協力いただきありがとうございます。

+0

あなたは最高とはどういう意味ですか、あなたは何を試してみましたか? – Xufox

答えて

6

0が見つかったときに0を取得する、またはその中の最後の項目をインクリメントする新しい配列を作成するのに、.reduce()を使用できます。

次に、Math.maxを使用して最大数を探します。

let tab = [0,0,0,1,1,1,0,0,0,0,1,0,1,1,1,1,1]; 
 

 
let streaks = tab.reduce((res, n) => 
 
    (n ? res[res.length-1]++ : res.push(0), res) 
 
, [0]); 
 

 
console.log(streaks.join(",")); 
 
console.log(Math.max(...streaks));


ここでは、コードのES5のバージョンがあります。

let tab = [0,0,0,1,1,1,0,0,0,0,1,0,1,1,1,1,1]; 
 

 
let streaks = tab.reduce(function(res, n) { 
 
    if (n) res[res.length-1]++; 
 
    else res.push(0); 
 
    return res; 
 
}, [0]); 
 

 
console.log(streaks.join(",")); 
 
console.log(Math.max.apply(Math, streaks));

+0

ありがとうございます。私は本当にES6の味に感謝します! :) –

+0

@LeSparte、でも少し遅いです... –

+0

@LeSparte:どうぞよろしくお願いします。 – llama

関連する問題