JavaScript で 2つの配列を比較する

Rupam Yadav 2023年10月12日
  1. JavaScript で 2つの配列を比較するための Array.prototype.equals
  2. JSON.stringify() を使って JavaScript で配列を比較する
  3. JavaScript でループを使用しての 2つの配列の比較
JavaScript で 2つの配列を比較する

このチュートリアルでは、JavaScript で配列を比較する 3つの方法を紹介します。複数の方法がありますが、パフォーマンスは異なるかもしれません。

JavaScript で 2つの配列を比較するための Array.prototype.equals

JavaScript は既存のクラスに新しいプロパティやメソッドを追加する機能を提供しています。Array.prototype を使って、カスタムメソッド equals を配列オブジェクトに追加することができます。

下の例では、まず両方の配列の長さを調べ、それぞれの要素を比較します。また、a1a2Array インスタンスであるかどうかも確認します。最後に、このメソッドを使用して、a1.equals(a2) によって最初の配列と 2 番目の配列を比較します。

例:

var a1 = [1, 2, 3];
var a2 = [1, 2, 3];
var a3 = [1, 2, 3, 4];

Array.prototype.equals = function(getArray) {
  if (this.length != getArray.length) return false;

  for (var i = 0; i < getArray.length; i++) {
    if (this[i] instanceof Array && getArray[i] instanceof Array) {
      if (!this[i].equals(getArray[i])) return false;
    } else if (this[i] != getArray[i]) {
      return false;
    }
  }
  return true;
};

console.log('Comparing a1 and a2', a1.equals(a2));
console.log('Comparing a1 and a3', a1.equals(a3));

出力:

Comparing a1 and a2 true
Comparing a1 and a3 false

JSON.stringify() を使って JavaScript で配列を比較する

2つの配列を比較するもう一つのテクニックは、最初に文字列型にキャストしてから比較することです。JSON はウェブサーバとの間でデータをやり取りするために使われますが、ここではそのメソッドを使用することができます。これは Arraystring に変換する JSON.stringify() を使用することで実現できます。a1a2 は両方とも文字列なので、=== を使って等しいかどうかを調べることができます。

例:

var a1 = [1, 2, 3];
var a2 = [1, 2, 3];
var a3 = [1, 2, 3, 4];

console.log('Comparing a1 and a2', JSON.stringify(a1) === JSON.stringify(a2));
console.log('Comparing a1 and a3', JSON.stringify(a1) === JSON.stringify(a3));

出力:

Comparing a1 and a2 true
Comparing a1 and a3 false

JavaScript でループを使用しての 2つの配列の比較

ループは、配列をループさせてから要素を比較して一致するかどうかをチェックするために、配列をループさせることで、JavaScript では配列を比較する最も伝統的な方法となっています。

よりすっきりさせるために、関数を使って結果として boolean を返すことができます。

例:

var a1 = [1, 2, 3];
var a2 = [1, 2, 3];
var a3 = [1, 2, 3, 4];

const getResult = function(a1, a2) {
  var i = a1.length;
  if (i != a2.length) return false;

  while (i--) {
    if (a1[i] !== a2[i]) return false;
  }
  return true;
};

console.log('Comparing a1 and a2', getResult(a1, a2));
console.log('Comparing a1 and a3', getResult(a1, a3));

出力:

Comparing a1 and a2 true
Comparing a1 and a3 false
著者: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

関連記事 - JavaScript Array