JavaScriptでAND演算子を使ってブール値配列をマージする方法
はじめに
JavaScriptでは、複数のブール値(真偽値)の配列を1つにまとめたい場面がよくあります。例えば、次のような「配列の中に配列が入った」ブール値のデータを考えてみましょう。
const arr = [[true,false,false],[false,false,false],[false,false,true]];
この記事では、各サブ配列の対応する位置にある要素同士をAND(&&)演算子で結合し、結果を1次元配列として返す関数の作り方を解説します。
実装のポイント
この処理には、配列を単一の値に畳み込むためのArray.prototype.reduce()メソッドを使うのが便利です。reduce()を使うことで、複数のサブ配列を順番に処理しながら、各インデックスのブール値をAND演算で集約できます。
具体的なロジックは以下の通りです。
- 初期値として空の配列
[]を用意する。 - reduce()のコールバック内で、各サブ配列をforEach()で走査する。
- 各要素について、累積配列の同じインデックスの値とAND演算を行い、結果を格納する。
コード例
以下が実際のコードです。
const arr = [[true,false,false],[false,false,false],[false,false,true]];
const andMerge = (arr = []) => {
return arr.reduce((acc, val) => {
val.forEach((bool, ind) => {
acc[ind] = acc[ind] && bool || false;
});
return acc;
}, []);
};
console.log(andMerge(arr));このコードでは、acc[ind] && bool || false という式によって、累積値と現在のブール値の論理積を安全に計算しています。undefinedとの演算を避けるため、|| false でフォールバックしている点がポイントです。
実行結果
このコードをコンソールで実行すると、次のような出力が得られます。
[ false, false, false ]
3つのサブ配列のうち、1番目のインデックスに true が存在するのは1つだけ、3番目のインデックスも同様であるため、すべての位置でAND演算の結果が false になります。すべてのサブ配列で同じ位置が true である場合のみ、その位置の結果が true となるわけです。
まとめ
reduce()とforEach()を組み合わせることで、ネストされたブール値配列を簡潔にマージできます。このテクニックは、複数の条件フラグをまとめて判定したい場合など、実務でも役立つ場面が多くあります。ぜひ活用してみてください。
-
JavaScriptでnewキーワードを使って配列を作成する方法
JavaScriptでは、newキーワードとArray()コンストラクタを使用することで、簡単に配列を作成できます。本記事では、実際に動作するサンプルコードとともに、その基本的な使い方を解説します。 サンプルコード 以下は、newキーワードを使用してJavaScriptの配列を作成するコード例です。 <!DOCTYPE html> <html lang=ja> <head> <meta charset=UTF-8 /> <meta name=viewport content=width=device-width, initial-sca
-
【JavaScript】filterとjoinを組み合わせて、条件に合う配列要素だけを結合する方法
JavaScriptでは、filter()メソッドとjoin()メソッドを組み合わせることで、条件を満たす要素だけを抽出し、それらを任意の区切り文字で1つの文字列に結合できます。本記事では、配列の中から「2で割り切れる要素(偶数)」だけを取り出して結合する具体例を、動作するサンプルコードとともに解説します。 処理の流れ:filter() と join() の役割 filter():コールバック関数が true を返した要素だけを集めた新しい配列を作成します。元の配列は変更されません。 join():配列内のすべての要素を、引数で指定した区切り文字で連結し、1つの文字列として返します。引数