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

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

Patricia Arquette
リリース: 2024-12-23 18:30:10
オリジナル
853 人が閲覧しました

How Do I Compare Arrays and Objects for Equality in JavaScript?

JavaScript での配列の同等性の比較

JavaScript での配列の同等性を識別することは、困難な作業となる場合があります。このシナリオでは、一般的な比較演算子 == では十分ではありません。代わりに、より微妙なアプローチが必要なオブジェクト比較の領域を詳しく掘り下げます。

ループを使用した配列の比較

配列を比較する簡単な方法は、要素を反復処理してその要素を検証することです。平等。その方法は次のとおりです。

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, l = this.length; i < l; 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 つのオブジェクト インスタンスは、プロパティが同じであっても、クラス インスタンスが異なるため、等しいとはみなされません。ただし、データ比較のみに焦点を当てている場合は、これは可能です。

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

  for (const propName in object2) {
    if (this.hasOwnProperty(propName) !== object2.hasOwnProperty(propName)) return false;
    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;
};
ログイン後にコピー

ネストされた配列

ネストされた配列の場合、Samy Bencherif の関数は、特定のオブジェクトを検索および比較するための効率的な方法を提供します。多次元配列内: https://jsfiddle.net/SamyBencherif/8352y6yw/.

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

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