通过JS深度判断两个对象字段相同
代码:
/** *判断此对象是否是Object类型 *@param{Object}obj */ functionisObject(obj){ returnObject.prototype.toString.call(obj)==='[objectObject]'; }; /** *判断此类型是否是Array类型 *@param{Array}arr */ functionisArray(arr){ returnObject.prototype.toString.call(arr)==='[objectArray]'; }; /** *深度比较两个对象是否相同 *@param{Object}oldData *@param{Object}newData */ functionequalsObj(oldData,newData){ //类型为基本类型时,如果相同,则返回true if(oldData===newData)returntrue; if(isObject(oldData)&&isObject(newData)&&Object.keys(oldData).length===Object.keys(newData).length){ //类型为对象并且元素个数相同 //遍历所有对象中所有属性,判断元素是否相同 for(constkeyinoldData){ if(oldData.hasOwnProperty(key)){ if(!equalsObj(oldData[key],newData[key])) //对象中具有不相同属性返回false returnfalse; } } }elseif(isArray(oldData)&&isArray(oldData)&&oldData.length===newData.length){ //类型为数组并且数组长度相同 for(leti=0,length=oldData.length;i测试:
varoldArr=[1,2, [ { name:"张三", age:11, } ], { name:'李四', age:21, em:[ { address:'邯郸', phone:'123' }, { address:'北京', phone:234 } ] } ]; varnewArr=[1,2, [ { name:"张三", age:11 } ], { name:'李四', age:21, em:[ { address:'邯郸', phone:'123' }, { address:'北京', phone:234 } ] } ]; console.log(equalsObj(oldArr,newArr));以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。