唐山网站建设最好的,自助微信网站,简约ins风工作室名字,北京最大的商场博主#xff1a;東方幻想郷 Or _LJaXi 专栏分类#xff1a;JavaScript | 脚本语言 JavaScript 递归 - 判断两个对象的键值 #x1f315; 起因#x1f313; 代码流程⭐ 第一步 判断两个对象的长度是否一致⭐ 第二步 循环 obj 进行判断两个对象⭐ 第三步 递归条件判断两个对象… 博主東方幻想郷 Or _LJaXi 专栏分类JavaScript | 脚本语言 JavaScript 递归 - 判断两个对象的键值 起因 代码流程⭐ 第一步 判断两个对象的长度是否一致⭐ 第二步 循环 obj 进行判断两个对象⭐ 第三步 递归条件判断两个对象深层次对象⭐ 第四步 判断两个对象的值是否相同⭐ 第五步 若以上步骤都不符合返回true 完整代码 起因 记得当时我是有写过一个判断两个对象内的键值手否相同的文章 使用 md5-js 判断两个对象键值是否相同 但是当时比较菜递归也看不太懂所以就用了别人的包 代码流程 首先明确一下需求 首先要有两个 Object 封装一个方法来判断两个对象内的keys并且要支持深层次判断 ⭐ 第一步 判断两个对象的长度是否一致 首先 声明一个判断对象的方法我们就叫他 objectsComparison提供两个形参 obj_oneobj_two 理一下思路既然要判断两个对象中的每一项 且 每一项中的深层次对象都一致的话 1.⚡先判断两个对象keys的长度是否相同
function objectsComparison(obj_one, obj_two) {// 判断两个对象的key长度是否一致若不一致返回false// 此时 key 长度不会监听到深层次的keyif (Object.keys(obj_one).length ! Object.keys(obj_two).length) {return false}
}⭐ 第二步 循环 obj 进行判断两个对象
⚡判断两个对象的 prop 是否为 object
function objectsComparison(obj_one, obj_two) {// 判断两个对象的key长度是否一致若不一致返回false// 此时 key 长度不会监听到深层次的keyif (Object.keys(obj_one).length ! Object.keys(obj_two).length) {return false}// 循环对象判断每一项for (let prop in obj_one) {// 判断两个对象每一项是否为objectif (typeof obj_one[prop] object typeof obj_two[prop] object) {} }
}⭐ 第三步 递归条件判断两个对象深层次对象
⚡递归条件判断两个对象的深层次对象是否符合本方法的所有条件若不符合返回false
function objectsComparison(obj_one, obj_two) {// 判断两个对象的key长度是否一致若不一致返回false// 此时 key 长度不会监听到深层次的keyif (Object.keys(obj_one).length ! Object.keys(obj_two).length) {return false}// 循环对象判断每一项for (let prop in obj_one) {// 判断两个对象每一项是否为objectif (typeof obj_one[prop] object typeof obj_two[prop] object) {// 使用递归条件监听两个深层次的对象if (!objectsComparison(obj_one[prop], obj_two[prop])) {return false}} }
}⭐ 第四步 判断两个对象的值是否相同
⚡判断两个对象值是否相同不相同返回false
function objectsComparison(obj_one, obj_two) {// 判断两个对象的key长度是否一致若不一致返回false// 此时 key 长度不会监听到深层次的keyif (Object.keys(obj_one).length ! Object.keys(obj_two).length) {return false}// 循环对象判断每一项for (let prop in obj_one) {// 判断两个对象每一项是否为objectif (typeof obj_one[prop] object typeof obj_two[prop] object) {// 使用递归条件监听两个深层次的对象if (!objectsComparison(obj_one[prop], obj_two[prop])) {return false}// 对象键不相等也会返回false} else if (obj_one[prop] ! obj_two[prop]) {return false}}
}⭐ 第五步 若以上步骤都不符合返回true
function objectsComparison(obj_one, obj_two) {// 判断两个对象的key长度是否一致若不一致返回false// 此时 key 长度不会监听到深层次的keyif (Object.keys(obj_one).length ! Object.keys(obj_two).length) {return false}// 循环对象判断每一项for (let prop in obj_one) {// 判断两个对象每一项是否为objectif (typeof obj_one[prop] object typeof obj_two[prop] object) {// 使用递归条件监听两个深层次的对象if (!objectsComparison(obj_one[prop], obj_two[prop])) {return false}// 对象键不相等也会返回false} else if (obj_one[prop] ! obj_two[prop]) {return false}}// 若以上条件都不成立返回true两个对象完全一致return true
}完整代码
function objectsComparison(obj_one, obj_two) {if (Object.keys(obj_one).length ! Object.keys(obj_two).length) {return false}for (let prop in obj_one) {if (typeof obj_one[prop] object typeof obj_two[prop] object) {if (!objectsComparison(obj_one[prop], obj_two[prop])) {return false}} else if (obj_one[prop] ! obj_two[prop]) {return false}}return true
}以上是 使用递归 判断连个对象是否完全一致的判断方法 希望能够帮助到你