この記事の例では、JavaScript で 2 つのオブジェクトが等しいかどうかを比較する方法について説明します。皆さんの参考に共有してください。詳細は以下の通りです。
Python では、cmp() 組み込み関数を使用して、2 つのオブジェクト (配列、シーケンス、辞書) に含まれるデータが等しいかどうかを比較できます。しかし、JavaScript 言語には関連する実装がありません。この JS コードは、さまざまな側面で JS オブジェクトを比較し、2 つのオブジェクトが等しいかどうかを判断します
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 不相同
この記事が皆様の JavaScript プログラミング設計に役立つことを願っています。