이 기사의 예에서는 JavaScript에서 두 객체가 동일한지 비교하는 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 세부 내용은 다음과 같습니다.
Python에서는 cmp() 내장 함수를 사용하여 두 객체에 포함된 데이터(배열, 시퀀스, 사전)가 동일한지 비교할 수 있습니다. 그러나 JavaScript 언어에는 관련 구현이 없습니다. 이 js 코드는 js 객체를 다양한 측면에서 비교하여 두 객체가 동일한지 확인합니다
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 프로그래밍 설계에 도움이 되기를 바랍니다.