通过JS深度判断两个对象字段相同

这篇文章主要介绍了通过JS深度判断两个对象字段相同,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下

代码:

 /** * 判断此对象是否是Object类型 * @param {Object} obj */ function isObject(obj){ return Object.prototype.toString.call(obj)==='[object Object]'; }; /** * 判断此类型是否是Array类型 * @param {Array} arr */ function isArray(arr){ return Object.prototype.toString.call(arr)==='[object Array]'; }; /** * 深度比较两个对象是否相同 * @param {Object} oldData * @param {Object} newData */ function equalsObj(oldData,newData){ // 类型为基本类型时,如果相同,则返回true if(oldData===newData)return true; if(isObject(oldData)&&isObject(newData)&&Object.keys(oldData).length === Object.keys(newData).length){ // 类型为对象并且元素个数相同 // 遍历所有对象中所有属性,判断元素是否相同 for (const key in oldData) { if (oldData.hasOwnProperty(key)) { if(!equalsObj(oldData[key],newData[key])) // 对象中具有不相同属性 返回false return false; } } }else if(isArray(oldData)&&isArray(oldData)&&oldData.length===newData.length){ // 类型为数组并且数组长度相同 for (let i = 0,length=oldData.length; i 

测试:

 var oldArr = [1,2, [ { name:"张三", age:11, } ], { name:'李四', age:21, em:[ { address:'邯郸', phone:'123' }, { address:'北京', phone:234 } ] } ]; var newArr = [1,2, [ { name:"张三", age:11 } ], { name:'李四', age:21, em:[ { address:'邯郸', phone:'123' }, { address:'北京', phone:234 } ] } ]; console.log(equalsObj(oldArr,newArr));

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持html中文网。

以上就是通过JS深度判断两个对象字段相同的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » JavaScript 教程