JavaScriptで配列内の連続する非負数のグループ数を数える方法
問題の概要
次のような数値の配列があるとします。
const arr = [-1,-2,-1,0,-1,-2,-1,-2,-1,0,1,0];
この配列から、負数ではない数値(0と正の数)が連続して並んでいる「グループ」の数を数えるJavaScript関数を作成する必要があります。
例えば上記の配列では、インデックス3から3まで(要素は1つだけですが、これも1つのクラスタとして扱います)が最初のグループとなり、インデックス9から配列の末尾までが2番目のグループとなります。
したがって、この配列の場合、関数は 2 を返す必要があります。
それでは、この関数のコードを書いてみましょう。
実装例
コードは以下のようになります。
const arr = [-1,-2,-1,0,-1,-2,-1,-2,-1,0,1,0];
const positiveClusters = arr => {
return arr.reduce((acc, val, ind) => {
if(val >= 0 && (arr[ind+1] < 0 || typeof arr[ind+1] === 'undefined')){
acc++;
};
return acc;
}, 0);
};
console.log(positiveClusters(arr));このコードでは、reduce() メソッドを使って配列を走査しています。ロジックのポイントは、現在の要素が0以上であり、かつ次の要素が負の数、または存在しない(配列の末尾に到達した)場合にカウンターを増やすという点です。
こうすることで、非負数の連続ブロックの終端ごとにカウントが1つずつ加算され、結果としてグループの総数を正確に求めることができます。
出力
コンソールには以下のように出力されます。
2
-
JavaScriptの数値(Number)の基本と実践サンプルコード
JavaScriptでは、整数も小数もすべて「Number」型として扱われます。この記事では、数値変数の定義方法と、それらを使った簡単な演算の例を、動作するHTMLサンプルコードとともに紹介します。サンプルコード以下は、JavaScriptで数値を扱う基本的な例です。整数(22、99)と小数(1.523)を変数に格納し、ボタンをクリックすると画面に表示する仕組みになっています。<!DOCTYPE html> <html lang=ja> <head> <meta charset=UTF-8 /> <meta name=viewport co
-
JavaScriptのグループ化演算子とは?優先順位の制御方法をサンプルコードで解説
グループ化演算子とはJavaScriptのグループ化演算子は、丸括弧「()」で表され、式を評価する際の優先順位を制御するために使用されます。通常、演算子にはあらかじめ決められた優先順位があり、乗算(*)や除算(/)は加算(+)や減算(-)よりも先に評価されます。しかし、グループ化演算子で式を囲むことで、この優先順位を意図的に変更し、囲まれた部分を最優先で計算させることができます。例えば「2+2*5/22」という式の場合、標準の優先順位では乗算・除算が先に実行されますが、丸括弧を使うことで「(2+2)*5/22」のように加算を先に行わせることが可能です。サンプルコード以下は、JavaScript