ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript で配列とオブジェクトを効率的に比較するにはどうすればよいですか?

JavaScript で配列とオブジェクトを効率的に比較するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-30 22:11:17
オリジナル
273 人が閲覧しました

How to Efficiently Compare Arrays and Objects in JavaScript?

JavaScript での配列の効率的な比較

はじめに

JavaScript での配列の比較は難しい場合があります。比較演算子 (==) は期待どおりに機能せず、比較のために配列を JSON に変換するのは非効率的になる可能性があります。ここでは、配列を効率的に比較するための包括的なガイドを示します:

配列の比較

効率的な配列比較を実行するには、次の手順に従います:

1 。カスタム Equals メソッド:

Array.prototype で、equals というカスタム メソッドを定義します。このメソッドは、配列の各要素を再帰的に比較します。

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

  for (let i = 0; i < this.length; i++) {
    if (
      this[i] instanceof Array &&
      array[i] instanceof Array
    ) {
      if (!this[i].equals(array[i])) return false;
    } else if (this[i] !== array[i]) {
      return false;
    }
  }
  return true;
};
ログイン後にコピー

2.使用法:

equals メソッドを使用して 2 つの配列を比較するには、次のように一方の配列で呼び出します。

[1, 2, [3, 4]].equals([1, 2, [3, 2]]) === false;
ログイン後にコピー

オブジェクトの比較

オブジェクトを部分的に比較することは可能ですが、2 つのオブジェクト インスタンスは、同じものが含まれている場合でも決して等しくないことに注意する必要があります。データ。

1.オブジェクトのカスタム Equals メソッド:

Object.prototype.equals = function (object2) {
  for (let propName in this) {
    if (
      this.hasOwnProperty(propName) !==
      object2.hasOwnProperty(propName)
    ) {
      return false;
    } else if (
      typeof this[propName] !== typeof object2[propName]
    ) {
      return false;
    }
  }

  for (let propName in object2) {
    if (
      this.hasOwnProperty(propName) !==
      object2.hasOwnProperty(propName)
    ) {
      return false;
    } else if (
      typeof this[propName] !== typeof object2[propName]
    ) {
      return false;
    }

    if (!this.hasOwnProperty(propName)) continue;

    if (
      this[propName] instanceof Array &&
      object2[propName] instanceof Array
    ) {
      if (!this[propName].equals(object2[propName]))
        return false;
    } else if (
      this[propName] instanceof Object &&
      object2[propName] instanceof Object
    ) {
      if (!this[propName].equals(object2[propName]))
        return false;
    } else if (this[propName] !== object2[propName]) {
      return false;
    }
  }

  return true;
};
ログイン後にコピー

2.使用法:

({ a: 1, foo: "bar", numberOfTheBeast: 666 }).equals({
  a: 1,
  foo: "bar",
  numberOfTheBeast: 666,
}) === false;
ログイン後にコピー

indexOf および contains を含むネストされた配列

ネストされた配列を含むより複雑な場合は、indexOf および contains 関数を使用して検索できます。ネストされた特定のオブジェクトの場合arrays.

結論

これらの手法に従うことで、JavaScript で配列とオブジェクトを効率的に比較でき、一般的な落とし穴に対処し、そのような比較を自信を持って実行できるようになります。

以上がJavaScript で配列とオブジェクトを効率的に比較するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート