ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript で 2 つのオブジェクトが等しいかどうかを比較する方法

JavaScript で 2 つのオブジェクトが等しいかどうかを比較する方法

不言
不言転載
2019-02-25 10:29:532913ブラウズ

この記事の内容は、JavaScript で 2 つのオブジェクトが等しいかどうかを比較する方法に関するものです。必要な方は参考にしていただければ幸いです。

これは、面接中に面接官から尋ねられた質問です

このインタビューの質問では、

Equal: オブジェクトの属性の数を指します Equal

obj が 2 つある

let obj1 = {
    name:'李德华',
    age:18,
    price:NaN
}

let obj2 = {
    name:'张德华',
    age:18,
    price:NaN
}

解決策が思いつく

function compare(obj1,obj2){
    if(Object.keys(obj1).length != Object.keys(obj2).length){
      return false
    }else{
      for(key in obj1){
        if(obj2.hasOwnProperty(key)){
            if( !Object.is(obj1[key],obj2[key])){
                return false;
            }
        }else{
          return false
        }
      }
      return true
    }
}

解決プロセスを考える

  • obj には長さが無いので、 Object.keys()

  • を介してそれを配列に変換して、オブジェクト内のプロパティが別の obj に存在するかどうかの 2 番目のステップに進むことしかできません。ここで Object.hasOwnProperty() は、オブジェクト内のプロパティを比較するためだけに使用されます (obj が親のプロパティを継承しないようにするため)

  • は、プロパティ値を比較する 2 番目のステップの基礎を保持します。 。 比較。 ES6 では Object.is() を使用して、NaN がそれ自身と等しくないという問題を回避します。

または Underscore.js で _.isEqual

を使用します

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

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。