Hi FE !
Ai
git
前端面试题
前端小tip
  • vite
  • webpack
npm
  • vue2
  • vue3
react
GitHub
Ai
git
前端面试题
前端小tip
  • vite
  • webpack
npm
  • vue2
  • vue3
react
GitHub
  • s010-手写深度比较

s010-手写深度比较


function isObject(obj) {
    return (typeof obj === 'object' && obj !== null);
}

function isEqual(obj1, obj2) {

    // 1.判断是不是引用类型,不是引用
    if (!isObject(obj1) || !isObject(obj2)) {
        return obj1 === obj2;
    }
    
    // 2.比较是否为同一个内存地址
    if (obj1 === obj2) return true;

    // 3.比较 key 的数量
    const obj1KeysLength = Object.keys(obj1).length;
    const obj2KeysLength = Object.keys(obj2).length;
    if (obj1KeysLength !== obj2KeysLength) return false;

    // 4.比较 value 的值
    for (let key in obj1) {
        const result = isEqual(obj1[key], obj2[key]);
        if(!result) return false;
    }
    return true;
}




const obj1 = {a:1,b:{x:100,y:200}}
const obj2 = {a:1,b:{x:100,y:200}}

isEqual(obj1, obj2) === true

Edit this page
最近更新: 2025/6/27 02:24
Contributors: qdleader
qdleader
本站总访问量 129823次 | 本站访客数 12人