JavaScriptで配列内のtrue/falseの値の個数を取得する方法
配列内の真偽値(true/false)の個数をカウントする
JavaScriptでは、オブジェクトの配列に含まれる真偽値(true/false)の個数を調べたいケースがよくあります。この記事では、forループを使った基本的な方法と、filterメソッドを使ったより簡潔な方法の2つを紹介します。
基本の実装:forループでカウントする
まずは、配列内のtrueとfalseの値をそれぞれカウントするサンプルコードを見てみましょう。
var obj = [
{
isMarried: true
},
{
isMarried: false
},
{
isMarried: true
},
{
isMarried: true
},
{
isMarried: false
}
]
function numberOfTrueValues(obj) {
var counter = 0;
for (var index = 0; index < obj.length; index++) {
if (obj[index].isMarried === true) {
counter++;
}
}
return counter;
}
function numberOfFalseValues(obj) {
var counter = 0;
for (var index = 0; index < obj.length; index++) {
if (obj[index].isMarried === false) {
counter++;
}
}
return counter;
}
console.log("Number Of true values=" + numberOfTrueValues(obj));
console.log("Number Of false values=" + numberOfFalseValues(obj));上記のコードでは、isMarriedプロパティを持つオブジェクトの配列を定義しています。numberOfTrueValues関数とnumberOfFalseValues関数は、それぞれ配列を先頭から順にループ処理し、厳密等価演算子(===)でプロパティの値がtrueまたはfalseと一致した場合にカウンタを1ずつ増やしていきます。最後に、集計したカウント値をreturn文で返します。
プログラムの実行方法
Node.jsで上記のプログラムを実行するには、ターミナルで以下のコマンドを使用します。
node fileName.js.
ここでは、ファイル名をdemo318.jsとして保存しています。
出力結果
プログラムを実行すると、コンソールに以下のような出力が表示されます。
PS C:\Users\Amit\javascript-code> node demo318.js Number Of true values=3 Number Of false values=2
配列には5つのオブジェクトが含まれており、そのうちisMarriedがtrueになっているのは3件、falseになっているのは2件であることが確認できます。
補足:filterメソッドを使ったより簡潔な書き方
モダンなJavaScriptでは、配列のfilterメソッドを使うことで、同じ処理をより短く直感的に書くことができます。
const trueCount = obj.filter(item => item.isMarried === true).length;
const falseCount = obj.filter(item => item.isMarried === false).length;
console.log("Number Of true values=" + trueCount);
console.log("Number Of false values=" + falseCount);filterメソッドは、条件に一致する要素だけを抜き出した新しい配列を返すため、そのlengthプロパティを参照すれば該当件数がすぐに分かります。可読性が高くバグも起きにくいため、実際の開発現場ではこちらの書き方が推奨されることが多いです。
-
JavaScriptのArray.values()メソッドとは?使い方とサンプルコードを徹底解説
JavaScriptのArray.values()メソッドとは? JavaScriptのArray.values()メソッドは、対象の配列に含まれるすべての値を格納したイテレーターオブジェクトを返します。ES2015(ES6)以降で利用可能なこのメソッドは、for...ofループやスプレッド構文([...arr])と組み合わせることで、配列の各要素を効率的に取り出せます。 なお、keys()やentries()がインデックス情報も一緒に返すのに対し、values()は純粋に「値」だけを順番に提供する点が大きな特徴です。 基本構文 arr.values() 引数は不要で、戻り値として新しいArr
-
【JavaScript】配列内のネストされたオブジェクトの値を合計する方法
この記事では、JavaScriptを使って、配列内にネストされた(入れ子構造の)オブジェクトの値を合計する方法を解説します。サンプルコードでは、JSONデータの複数階層に格納された数値(costNum)を順番に取り出し、その合計をブラウザ上に表示します。 コード例 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=d