【JavaScript】2つの配列を比較してtrue/falseの新しい配列を作成する方法
JavaScriptでは、2つの配列を比較し、片方の配列(master配列)の要素がもう片方の配列(keys配列)に存在するかどうかを判定したいケースがあります。その結果として、master配列と同じ長さの新しい配列を作成し、keys配列に存在する値にはtrue、存在しない値にはfalseを格納する方法を解説します。
問題の例
たとえば、次のような2つの配列があるとします。
const master = [3,9,11,2,20]; const keys = [1,2,3];
この場合、期待される最終的な配列は以下のようになります。
const finalArray = [true, false, false, true, false];
master配列の要素「3」と「2」はkeys配列に含まれているためtrueになり、「9」「11」「20」は含まれていないためfalseになります。
実装コード
この問題を解決するには、配列のmap()メソッドとincludes()メソッドを組み合わせるのが効果的です。実際に関数を書いてみましょう。
const master = [3,9,11,2,20];
const keys = [1,2,3];
const prepareBooleans = (master, keys) => {
const booleans = master.map(el => {
return keys.includes(el);
});
return booleans;
};
console.log(prepareBooleans(master, keys));
コードの解説
map()メソッドは、master配列の各要素に対して順番に処理を実行し、その結果から新しい配列を作成します。各要素に対してincludes()メソッドを使い、その要素がkeys配列に含まれているかどうかを判定しています。includes()は要素が存在すればtrue、存在しなければfalseを返すため、その結果がそのまま新しい配列の要素になります。
実行結果
コンソールには次のように出力されます。
[ true, false, false, true, false ]
このように、map()とincludes()を組み合わせることで、わずか数行のコードで2つの配列を比較した判定結果の配列を簡単に作成できます。なお、大量のデータを扱う場合は、includes()の代わりにSetオブジェクトを使用すると検索速度が向上し、パフォーマンス面でより効率的になります。
-
JavaScriptで2つの配列を結合する方法【concat()とスプレッド構文】
JavaScriptで2つの配列を1つにまとめたい場合、最も一般的なのが concat() メソッドです。このメソッドは、元の配列を変更することなく、複数の配列や値を連結した新しい配列を返します。 concat()メソッドの基本構文 let 新しい配列 = 配列A.concat(配列B); サンプルコード 以下は、ボタンをクリックすると2つの配列を結合し、その結果を画面に表示する完全なサンプルです。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8&
-
JavaScriptで2つの配列を乗算する方法|forループとmap()の実装例
JavaScriptで2つの配列の各要素同士を乗算し、その結果を新しい配列として取得する方法を解説します。基本的にはforループでインデックスを順番に処理しながら、対応する位置にある要素同士を掛け合わせていくシンプルなアプローチです。 2つの配列を乗算するサンプルコード 以下の例では、「CLICK HERE」ボタンをクリックすると、配列 arr と arr1 の対応する要素が乗算され、結果が新しい配列 multArray に格納された上で画面に表示されます。 <!DOCTYPE html> <html lang=en> <head> <meta ch