JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

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()を組み合わせることで、ネストされたブール値配列を簡潔にマージできます。このテクニックは、複数の条件フラグをまとめて判定したい場合など、実務でも役立つ場面が多くあります。ぜひ活用してみてください。

  1. 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

  2. 【JavaScript】filterとjoinを組み合わせて、条件に合う配列要素だけを結合する方法

    JavaScriptでは、filter()メソッドとjoin()メソッドを組み合わせることで、条件を満たす要素だけを抽出し、それらを任意の区切り文字で1つの文字列に結合できます。本記事では、配列の中から「2で割り切れる要素(偶数)」だけを取り出して結合する具体例を、動作するサンプルコードとともに解説します。 処理の流れ:filter() と join() の役割 filter():コールバック関数が true を返した要素だけを集めた新しい配列を作成します。元の配列は変更されません。 join():配列内のすべての要素を、引数で指定した区切り文字で連結し、1つの文字列として返します。引数