您好,欢迎访问一九零五行业门户网

JavaScript比较两个对象是否相等的方法_javascript技巧

本文实例讲述了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程序设计有所帮助。
其它类似信息

推荐信息