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

es6 で 2 つのオブジェクトが等しいかどうかを判断する方法

青灯夜游
青灯夜游オリジナル
2022-04-19 15:34:513802ブラウズ

es6 では、Object オブジェクトの is() メソッドを使用して、2 つのオブジェクトが等しいかどうかを判断できます。このメソッドは、2 つの変数の値が同じ値であるかどうかを検出し、参照アドレスが同じであるかどうかを判断します。構文 "Object.is(Object 1, Object 2)"; このメソッドはブール値を返します。true が返された場合、2 つのオブジェクトが等しいことを意味します。

es6 で 2 つのオブジェクトが等しいかどうかを判断する方法

このチュートリアルの動作環境: Windows 7 システム、ECMAScript バージョン 6、Dell G3 コンピューター。

2 つの Object タイプのオブジェクトは、同じ属性と値を持っている場合でも、== または === を使用して比較すると同等とみなされません。これは、値によって比較されるプリミティブ型とは異なり、参照 (メモリ内の場所) によって比較されるためです。

var obj1 = {
    name: "xiaoming",
    sex : "male"
}
 
var obj2 = {
    name: "xiaoming",
    sex : "male"
}
 
console.log(obj1 === obj2); // false

ただし、ES6 には 2 つのオブジェクトが等しいかどうかを判断するメソッドが用意されています。このメソッドは、2 つのオブジェクトの参照アドレスが一致しているかどうかを判断します。

Object.is(a,b)

Object.is() メソッドは、 2 つの値が等しい、同じ値です。次の条件が満たされる場合、2 つの値は等しいです:

  • # は両方とも未定義です

  • は null

  • はすべて true または falseです。

  • すべてが同じ長さの文字列であり、同じ文字が同じ順序で配置されています

  • すべて同じオブジェクトです (各オブジェクトが同じ参照を持つことを意味します)

  • は数値、

    • # は 0

    • はすべて -0

    • はすべて NaN

    • であるか、または両方とも非ゼロおよび非 NaN であり、

戻り値: 2 つのパラメータが同じ値であるかどうかを示すブール型。

例 1:

let obj1= {
	a: 1
}
let obj2 = {
	a: 1
}
console.log(Object.is(obj1, obj2)) // false
let obj3 = obj1
console.log(Object.is(obj1, obj3)) // true
console.log(Object.is(obj2, obj3)) // fals

es6 で 2 つのオブジェクトが等しいかどうかを判断する方法

例 2:

Object.is('foo', 'foo')  //true
Object.is(window, window)  //true
Object.is([], [])  //false
Object.is(null, null)  //true

拡張知識:

Object.is() メソッドは == (en-US) 操作とは異なります。 == 演算子は、等しいかどうかを判断する前に (同じ型でない場合に) 変数を両側にキャストします (この動作の結果は、 "" == false を true と判断します) が、Object.is は変数をキャストしません。両面の値です。

Object.is() メソッドは、=== (en-US) 操作とも異なります。 === 演算子 (== 演算子も含まれます) は、数値 -0 と 0 を等しいものとして扱い、Number.NaN と NaN を不等なものとして扱います。

[関連する推奨事項: javascript ビデオ チュートリアルウェブ フロントエンド]

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。