es6 では、Object オブジェクトの is() メソッドを使用して、2 つのオブジェクトが等しいかどうかを判断できます。このメソッドは、2 つの変数の値が同じ値であるかどうかを検出し、参照アドレスが同じであるかどうかを判断します。構文 "Object.is(Object 1, Object 2)"; このメソッドはブール値を返します。true が返された場合、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
例 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 サイトの他の関連記事を参照してください。