JavaScriptのArray.prototype.every()メソッドで配列同士を比較する方法
本記事では、リテラル値からなる2つの配列を受け取り、最初の配列のすべての要素が2番目の配列に含まれているかどうかを判定するJavaScript関数を作成します。要素の出現回数(個数)は考慮せず、1つでも含まれていない要素があればfalseを返します。
この比較にはArray.prototype.every()メソッドを使用します。every()は配列内のすべての要素が指定した条件(コールバック関数)を満たしているかどうかを確認し、結果をブール値で返す便利なメソッドです。
コード例
const arr1 = [0, 2, 2, 2, 1];
const arr2 = [0, 2, 2, 2, 3];
const compareArrays = (arr1, arr2) => {
const areEqual = arr1.every(el => {
return arr2.includes(el);
});
return areEqual;
};
console.log(compareArrays(arr1, arr2));出力結果
コンソールには次のように表示されます。
false
仕組みの解説
このコードでは、arr1の各要素に対してarr2.includes(el)を呼び出し、その要素がarr2内に存在するかどうかを順番にチェックしています。今回の例では、arr1の末尾にある1がarr2に含まれていないため、every()の評価はそこで打ち切られ、全体としてfalseが返されます。
なお、every()は条件を満たさない要素を見つけた時点で処理を終了するため、大きな配列でも効率的に動作します。また、「同じ要素が同じ回数だけ含まれているか」という厳密な一致を判定したい場合は、両方の配列を事前にソートして比較するか、オブジェクトやMapを使って各要素の出現回数を集計して照合する方法が有効です。
-
JavaScriptのArray.prototype.flat()メソッドとは?配列を指定した深さで平坦化する方法
Array.prototype.flat()メソッドとはJavaScriptのArray.prototype.flat()メソッドは、ネストされた配列を指定した深さまで再帰的に平坦化(フラット化)するためのメソッドです。元の配列を変更することはなく、平坦化された新しい配列を作成して返します。引数には平坦化の深さ(depth)を数値で指定します。省略した場合はデフォルトで「1」が適用され、「Infinity」を指定すればすべての階層のネストを完全に展開することも可能です。コード例以下は、Array.prototype.flat()メソッドを使用したサンプルコードです。<!DOCTYPE h
-
JavaScriptのオブジェクト配列に配列メソッドを適用する方法
JavaScriptでは、オブジェクトが格納された配列に対しても、通常の配列と同じようにpop()、push()、splice()などの標準的な配列メソッドをそのまま使用できます。オブジェクト配列はあくまで「配列」であるため、要素としてオブジェクトが入っていても配列操作のAPIは共通で動作します。 コード例 以下は、JavaScriptオブジェクトの配列に対して配列メソッドを使用するサンプルコードです。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8