JavaScript比較兩個(gè)對(duì)象是否相等的方法
本文實(shí)例講述了JavaScript比較兩個(gè)對(duì)象是否相等的方法。分享給大家供大家參考。具體如下:
在Python中可以通過(guò)cmp()內(nèi)建函數(shù)來(lái)比較兩個(gè)對(duì)象所包涵的數(shù)據(jù)是否相等(數(shù)組、序列、字典)。但是在javascript語(yǔ)言中并沒(méi)有相關(guān)的實(shí)現(xiàn)。本js代碼通過(guò)對(duì)js對(duì)象進(jìn)行各方面的比較來(lái)判斷兩個(gè)對(duì)象是否相等
cmp = function( x, y ) {
// If both x and y are null or undefined and exactly the same
if ( x === y ) {
return true;
}
// If they are not strictly equal, they both need to be Objects
if ( ! ( x instanceof Object ) || ! ( y instanceof Object ) ) {
return false;
}
//They must have the exact same prototype chain,the closest we can do is
//test the constructor.
if ( x.constructor !== y.constructor ) {
return false;
}
for ( var p in x ) {
//Inherited properties were tested using x.constructor === y.constructor
if ( x.hasOwnProperty( p ) ) {
// Allows comparing x[ p ] and y[ p ] when set to undefined
if ( ! y.hasOwnProperty( p ) ) {
return false;
}
// If they have the same strict value or identity then they are equal
if ( x[ p ] === y[ p ] ) {
continue;
}
// Numbers, Strings, Functions, Booleans must be strictly equal
if ( typeof( x[ p ] ) !== "object" ) {
return false;
}
// Objects and Arrays must be tested recursively
if ( ! Object.equals( x[ p ], y[ p ] ) ) {
return false;
}
}
}
for ( p in y ) {
// allows x[ p ] to be set to undefined
if ( y.hasOwnProperty( p ) && ! x.hasOwnProperty( p ) ) {
return false;
}
}
return true;
};
使用:
objA={
a:'123',
b:'456'
};
objB={
a:'123',
b:'000'
};
var isEqual= cmp(objA, objB);
console.log(isEqual); // false 不相同
希望本文所述對(duì)大家的javascript程序設(shè)計(jì)有所幫助。
- JS中如何比較兩個(gè)Json對(duì)象是否相等實(shí)例代碼
- 詳解JS 比較兩個(gè)Json對(duì)象的值是否相等的實(shí)例
- js對(duì)象的比較
- js對(duì)象與打印對(duì)象分析比較
- javascript 對(duì)象比較實(shí)現(xiàn)代碼
- js比較兩個(gè)單獨(dú)的數(shù)組或?qū)ο笫欠裣嗟鹊膶?shí)例代碼
- js實(shí)現(xiàn)數(shù)組去重、判斷數(shù)組以及對(duì)象中的內(nèi)容是否相同
- JS判斷兩個(gè)數(shù)組或?qū)ο笫欠裣嗤姆椒ㄊ纠?/a>
- JS實(shí)現(xiàn)對(duì)json對(duì)象排序并刪除id相同項(xiàng)功能示例
- 通過(guò)JS深度判斷兩個(gè)對(duì)象字段相同
- js中比較兩個(gè)對(duì)象是否相同的方法示例
相關(guān)文章
Javascript的異步函數(shù)和Promise對(duì)象你了解嗎
這篇文章主要為大家詳細(xì)介紹了Javascript異步函數(shù)和Promise對(duì)象,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-03-03
在JavaScript中查找字符串中最長(zhǎng)單詞的三種方法(推薦)
這篇文章主要介紹了在JavaScript中查找字符串中最長(zhǎng)單詞的三種方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01
一個(gè)Js文件函數(shù)中調(diào)用另一個(gè)Js文件函數(shù)的方法演示
這篇文章主要介紹了一個(gè)Js文件函數(shù)中調(diào)用另一個(gè)Js文件函數(shù)的方法,兩個(gè)javascript文件中相互調(diào)用函數(shù),主要是將引入的Js文件代碼放在</body>下面。具體操作方法可查看下文,需要的朋友可以參考下2017-08-08
JavaScript設(shè)置FieldSet展開(kāi)與收縮
JavaScript設(shè)置FieldSet展開(kāi)與收縮實(shí)現(xiàn)代碼。2009-05-05
JavaScript實(shí)現(xiàn)換膚效果(換背景)
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)換膚效果,即換背景功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09
微信小程序手機(jī)號(hào)碼驗(yàn)證功能的實(shí)例代碼
這篇文章主要介紹了微信小程序手機(jī)號(hào)碼驗(yàn)證功能的實(shí)例代碼及微信小程序正則判斷手機(jī)號(hào)的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-08-08
JS常見(jiàn)創(chuàng)建類的方法小結(jié)【工廠方式,構(gòu)造器方式,原型方式,聯(lián)合方式等】
這篇文章主要介紹了JS常見(jiàn)創(chuàng)建類的方法,結(jié)合實(shí)例形式總結(jié)分析了工廠方式,構(gòu)造器方式,原型方式,聯(lián)合方式等常見(jiàn)的javascript創(chuàng)建類的常用技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-04-04

